生活不易 我用python大数据 爬虫Python AI Sqlredis学习

《redis实战》笔记—— 数据结构及其命令

2017-04-24  本文已影响0人  hukx_michael

概述


redis 可以存储键与 5 种不同数据结构类型之间的映射,分别为 STRING(字符串), LIST(列表), SET(集合), HASH(散列), ZSET(有序集合),有些命令是对于这些数据结构是通用的,而有些只是对于特定数据结构的。


1. STRING

命令 redis用例和描述 Python redis库调用
incr incr key 将键存储的值加1 conn.incr('key')
decr decr key 将键存储的值减1 conn.decr('key')
incrby incrby key amount 将键存储的值加整数amount conn.incr('key', amount)
decrby decrby key amount 将键存储的值减整数amount conn.decr('key', amount)
incrbyfloat incrbyfloat key amount 将键存储的值加上浮点数 amount conn.incrbyfloat('key', amount)
没有decrbyfloat
命令 redis用例和描述 Python redis库调用
append append key value将值value追加到给定的键 key当前存储的值的末尾 conn.append('key', 'value')
getrange(2.6之前为substr) getrange key start end 获取一个由偏移量start至end范围内所有字符组成的子串,包括start和end在内(索引以0开始) conn.getrange('key', start, end)
setrange setrange key offset value 将从偏移offset开始的子串设置为给定值 conn.setrange('key', offset, 'new-value')
位操作 getbit、setbit、bitcount、bitop

2. LIST

命令 redis用例和概述 python redis 库调用
rpush rpush key vlaue [value ...] 将一个或多个值push进列表的右端 conn.rpush('key', 'value')
lpush lpush key value [value ...]...左端 conn.lpush('key', 'value')
rpop rpop key 移除并返回列表最右端的元素 conn.rpop('key')
lpop lpop key 移除并返回列表最左端的元素 conn.lpop('key')
lindex lindex key offset 返回列表中偏移量为offset的元素 conn.index('key', offset)
lrange lrange key start stop 返回列表中从start偏移量到end偏移量范围内的所有元素,包括start和end conn.lrange('key', start, stop)
ltrim ltrim key start stop 对列表进行修剪,只保留从start到end(包括start和end)之间的元素 conn.ltrim('key', start, stop)
命令 redis用例和描述 Python redis 库调用
blpop blpop key[key...] timeout 从第一个非空列表中弹出位于最左端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现 conn.blpop(keys, timeout)
brpop brpop key[key...] timeout 从第一个非空列表中弹出位于最右端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现 conn.brpop(keys, timeout)
rpoplpush rpoplpush source-key dest-key 从source-key列表中pop出位于最右端的元素,然后将这个元素push进dest-key列表的最左端,并向用户返回这个元素 rpoplpush(source-key, dest-key)
brpoplpush brpoplpush source-key dest-key timeout 从source-key列表中弹出位于最右端的元素,然后将这个元素推入dest-key列表的最左端,并向用户返回这个元素:如果souce-key为空,那么在timeout秒之内阻塞并等待可弹出的元素出现 brpoplpush(source-key, dest-key, timeout)

方便理解阻塞式(block), 演示如下

阻塞式演示,左为redis-cli,右为python命令行

3. SET

命令 redis用例和描述 Python redis库调用
sadd sadd key item [item...] 添加 conn.sadd(key, *items)
srem srem key itme [...] 删除 conn.srem(key, *items)
sismember sismember 检查元素item是否存在于集合key里 conn.sismember(key, item)
scard scard key 返回集合包含的元素的数量 conn.scard(key)
semebers smembers key 返回集合中所包含的所有元素 conn.smembers(key)
srandmember srandmember key [count]从集合里面随机地返回一个或多个元素,当count为正时,命令返回的随机元素不会重复,为负数的时候可能会重复 conn.srandmember(key, count=None)
spop spop key 随机地移除集合中的一个元素,并返回被移除的元素 conn.spop(key)
smove smove source-key dest-key item如果集合source-key包含元素item,那么从集合source-key中移除元素item,并将元素item添加到集合dest-key中;如果item被成功移除,那么命令返回1,否则返回0 conn.smove(source-key dest-key item)
命令 redis用例和描述 Python redis库调用
sdiff sdiff key [keys...]返回那些存在于第一个集合、但不存在与其他集合中的元素( conn.sdiff(key, *keys)
sdiffstore sdiffstore dest-key key [keys...]将那些存在于第一个集合但并不存在与其他集合中的元素存储到dest-key键里面 conn.sdiffstore(dest-key, key, *keys)
sinter sinter key [keys...]返回那些同时存在于所有集合中的元素( conn.sinter(key, *keys)
sinterstore sinterstore dest-key key [keys...]交&存储 conn.sinterstore(dest-key, key, *keys)
sunion sunion key [keys...] conn.sunion(key, *keys)
sunionstore sunionstore dest-key key [keys...] 并&存储 conn.sunionstore(dest-key, key, *keys)

4. HASH

命令 redis用例和描述 Python redis 库调用
hmget hmget key-name key [keys...] 从散列里面获取一个或者多个键的值 hmget(key-name, key [keys...])
hmset hmset key-name key value [keys values ...]为散列里的一个或多个键设置值 hmset(key-name, dict(key=value))
hdel hdel key-name key [keys ...]删除散列里面的一个或多个键值对,返回删除的数量 conn.hdel(key-name, key, [keys...])
hlen hlen key-name 返回散列包含的键值对数量 conn.hlen(key-name)
命令 redis用例和描述 Python redis库调用
hexists hexists key-name key检查给定键是否存在于散列中 conn.hexists('key-name', 'key')
hkeys hkeys key-name 获取散列的所有键 conn.hkeys('key-name')
hvals hvals key-name 获取散列包含的所有值 conn.hvals('key-name')
hgetall hgetall key-name 获取散列包含的所有键值对 conn.hgetall('key-name')
hincrby hincrby key-name key increment 将键key保存的值加上整数increment, 对散列中一个不存在的键执行自增操作时会将键的值当做0来处理 conn.hincrby('key-name', 'key', increment)
hincrbyfloat hincrbyfloat key-name key increment 将键key保存的值加上浮点数increment,若 不存在当做0来处理 conn.hincrbyfloat('key-name', 'key', increment)

-hgetallvs hkeys&hget : 如果散列包含的值非常大,那么用户可以先使用hkeys 取出散列包含的所有键, 然后再使用 hget一个接一个地取出键的值,从而避免因为一次获取多个大体积的值而导致服务器阻塞


5. ZSET

命令 redis用例和描述 python redis 库调用
zadd zadd key-name score member [score member ...] 将带有给点分值的成员添加到有序集合里面 conn.zadd('key-name', 'member1', 'score1', 'member2', 'score2') 与redis标准的先输入score后输入member的做法相反
zrem zrem key-name member [member...] 从有序集合里面移除给定的成员,并返回被移除成员的数量 conn.zrem('key-name', 'member')
zcard zcard key-name 返回有序集合包含的成员数量 conn.zcard('key-name')
zincrby zincrby key-name increment member 将member成员的分值加上increment conn.zincrby('key-name', 'member', increment)
zcount zcount key-name min max 返回分值介于min 和 max 之间的成员数量 conn.zcount('key-name', min, max) 获取成员的排名(以0开始)
zrank zrank key-name member 返回成员member 在有序集合中的排名 conn.zrank('key-name', 'member')
zscore zscore key-name member 返回成员member的分值 conn.zscore('key-name', 'member')
zrange zrange key-name start stop [withscores] 返回有序集合中排名介于start和stop之间的成员,如果给定了可选的withscore选项,那么命令会将成员的分值也一并返回 conn.zrange('key-name', start, stop, withscores=True)
zrangebyscore zrangebyscore key min max [withscores] [limit offset count] 获取有序集合中分值介于min和max 之间的所有成员
描述 命令
逆序命令(从大到小) zrevrank、zrevrange、zrevrangebyscore
删除操作 zremrangebyrank、zremrangebyscore
交并运算 1. zinterstore:zinterstore dest-key key-count key [key ...] [weights weight [weight ...]] [aggregate sum、min、max]
2.zunionstore:zunionstore dest-key key-count key [key ...] [weights weight [weight ...]] [aggregate sum、min、max]
上一篇 下一篇

猜你喜欢

热点阅读