Redis 命令
字符串命令
Redis字符串是一个由字节组成的序列。
字符串可以存储三种类型的值:
1. 字节串
2. 整数
3. 浮点数
用户可以通过给定一个数值,对存储的整数或浮点数的字符串执行自增或自减操作。
在有需要的时候,Redis 还会将整数转换为浮点数。
Redis 明确地区分字节串、整数和浮点数的做法,使得Redis 在数据表现方面更具灵活性。
数值自增,自减
命令 | 行为 | 参数 |
---|---|---|
INCR | 将键存储的数值 + 1 | INCR key |
DECR | 将键存储的数值 - 1 | DECR key |
INCRBY | 将键存储的值加上整数 count | INCRBY key count |
DECRBY | 将减存储的值减去整数 count | DECRBY key count |
INCRBYFLOAT | 将减存储的值加上浮点数 amount | INCRBYFLOAT key count |
当一个值被存储到 Redis 字符串中时,如果这个值可以被解释为十进制整数或浮点数,那么 Redis 才会允许对这个字符串执行数自增、自减操作。
如果对一个不存在的键或者保存了空串的键执行自增或自减,那么 Redis 在执行操作时会将这个键当作 0 来处理。
如果对一个无法被解释为整数或者浮点数的字符串执行自增、自减操作,那么将返回一个错误。
在这里我们使用 Python 和 Redis 进行交互
我们调用 incr() 而不是 INCRBY 是因为,Python的 Redis 库在内部使用 INCRBY 命令来实现 incr()方法,并且第二参数是可选的,如果没有第二个参数,那么默认为 1。
DEL: 由于del是python语法关键字,所用delete来代替。
字符串子串和二进制位
命令 | 行为 | 参数 |
---|---|---|
APPEND | 将 value 追加到给定键的值的末尾 | APPEND key value |
GETRANGE | 获取一个在偏移量范围内所有字符组成的字串,包括 start 和 end | GETRANGE key start end |
SETRANGE | 从 offset 开始的字串设置为给定值 | SETRANGE key offset value |
GETBIT | 将字串看作是二进制制位串,并返回偏移量为 offset 的二进制位的值 | GETBIT key offset |
SETBIT | 将字串看作是二进制制位串,并将位串中偏移量为 offset 的二进制位设置为 value | SETBIT key offset value |
BITCOUNT | 统计二进制位串中值为1的二进制位的数量,如果给定了 start 和 end 则进行范围统计 | BITCOUNT key [start end] |
BITOP | 对一个或多个二进制位串执行合并、或、异或、非在内的任意一种按位运算操作,并将结果放在 destkey 中 | BITOP operation destkey key [key …] |
在这里,所谓的二进制位串,其实就是对应字符的ASCII码,1 的 ASCII 是 49,对应的二进制为 110001,所以统计 bitcount 的结果是 3,然后我们将下标为 1 的位置 1 ,并返回被设置前的值。
在使用 SETRANGE 或 SETBIT 时,如果字符串当前的长度不能满足,则先使用空字节来将字符串扩展至所需长度,然后再执行写入或更新操作。
列表命令
命令 | 行为 | 参数 |
---|---|---|
RPUSH | 将一个或多个值推入列表的右端 | RPUSH key value [value…] |
LPUSH | 将一个或多个值推入列表的左端 | LPUSH key value [value…] |
RPOP | 移除并返回列表最右端的值 | RPOP key |
LPOP | 溢出并返回列表最左端的值 | LPOP key |
LINDEX | 返回列表中下标为 index 的元素 | LINDEX key index |
LRANGE | 返回列表从 start 到 stop 范围内的所有元素 | LRANGE key start stop |
LTRIM | 阶段列表,只保留 start 到 stop 范围内的元素 | LTRIM key start stop |
命令 | 行为 | 参数 |
---|---|---|
BLPOP | 从第一个非空列表中弹出位于最左端的元素,或在 timeout 秒内阻塞并等待可弹出的元素出现 | BLPOP key [key …] timeout |
BRPOP | 从第一个非空列表中弹出位于最右端的元素,或在 timeout 秒内阻塞并等待可弹出的元素出现 | BRPOP key [key …] timeout |
RPOPLPUSH | 从 source 列表中弹出位于最右端的元素,然后推入 dest 列表的最左端,并返回此元素 | RPOPLPUSH source destination |
BRPOPLPUSH | 从 source 列表中弹出位于最右端的元素,然后推入 dest 列表的最左端,并返回此元素,,如果 source为空,那么在 tiemout 秒之内阻塞并等待可弹出的元素 | RPOPLPUSH source destination timeout |
timeout为0时,持续阻塞直到有可弹出元素
集合命令
命令 | 行为 | 参数 |
---|---|---|
SADD | 将一个或多个元素添加到集合中,并返回被添加元素当中原本并不存在于集合中的元素数量 | SADD key member [member …] |
SREM | 从集合中移除一个或多个元素,并返回被移除元素数量 | SREM key member [member …] |
SISMEMBER | 检查元素 member 是否存在于集合 key 中 | SISMEMBER key member |
SCARD | 返回集合包含元素的数量 | SCARD key |
SMEMBERS | 返回集合包含的所有元素 | SMEMBERS key |
SRANDMEMBER | 从集合里面随机的返回 conut 个元素,当 count 为整数时,命令返回的随机元素不重复,当 count 为负数时,随机元素可能会出现重复 | SRANDMEMBER key [count] |
SPOP | 随机的移除集合中的一个元素,并返回被移除的元素 | SPOP key [count] |
SMOVE | 如果集合 source 包含元素 member,那么从集合 source 中移除 member,并将元素 member 添加到集合 dest 中 | SMOVE source destination member |
组合和处理多个集合
命令 | 行为 | 参数 |
---|---|---|
SDIFF | 返回存在于第一个集合,但不存在于其他集合中的元素,差集 | SDIFF key [key …] |
SDIFFSETORE | 将存在于第一个集合但不存在于其他集合中的元素存储到 dest 中 | SDIFFSTORE destination key [key …] |
SINTER | 返回同时存在于所有集合中的元素,并集 | SINTER key [key …] |
SINTERSTORE | 同上 | SINTERSTORE destination key [key …] |
SUNION | 返回哪些至少存在于一个集合中的元素,并集 | SUNION key [key …] |
SUNIONSTORE | 同上 | SUNIONSTORE destination key [key …] |
散列
命令 | 行为 | 参数 |
---|---|---|
HMGET | 从散列中获取一个或多个值 | HMGET key field [field …] |
HMSET | 为散列里面的一个或多个键设置值 | HMSET key field value [field value …] |
HDEL | 删除散列米中的一个或多个键值对,返回成功找到并删除的键值对数量 | HDEL key field [field …] |
HLEN | 返回散列包含的键值对数量 | HLEN key |
更高级特性
命令 | 行为 | 参数 |
---|---|---|
HEXISTS | 判断给定的键是否存在于散列中 | HEXISTS key field |
HKEYS | HKEYS key | 获取散列包含的所有键 |
HVALS | HVALS key | 获取散列包含的所有值 |
HGETALL | HGETALL key | 获取散列包含的所有键值对 |
HINCRBY | 将键 filed 存储的值加上 increment | HINCRBY key field increment |
HINCRBYFLOAT | 同上,不过加的是浮点数 | HINCRBYFLOAT key field increment |
有序集合命令
命令 | 行为 | 参数 |
---|---|---|
ZADD | 将带有分值的成员添加到有序集合中 | ZADD key [NX |
ZREM | 从有序集合中移除给定成员,并返回被移除成员的数量 | ZREM key member [member …] |
ZCARD | 返回有序集合包含的成员数量 | ZCARD key |
ZINCRBY | 将member 的成员的分值加上 increment | ZINCRBY key increment member |
ZCOUNT | 返回分值介于 min 和 max 之间的成员数量 | ZCOUNT key min max |
ZRANK | 返回成员 member 在有序集合中的排名 | ZRANK key member |
ZSCORE | 返回成员 member 的分值 | ZSCORE key member |
ZRANGE | 返回有序集合中排名在 start – stop 之间的成员 | ZRANGE key start stop [WITHSCORES] |
高级特性
ZREVRANK | 返回有序集合成员排名,从大到小排列 | ZREVRANK key member |
---|---|---|
ZRAVERANGE | 返回返回为内的成员,从大到小排列 | ZREVRANGE key start stop [WITHSCORES] |
ZRANGEBYSCORE | 分值介于 min 和 max 之间的所有成员 | ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
ZRMERANGEBYSCORE | 移除分值介于 min 和 max 之间的所有成员 | ZREMRANGEBYSCORE key min max |
ZREMRANGEBYRANK | 移除排名介于 start 和 stop 之间的所有成员 | ZREMRANGEBYRANK key start stop |
ZINTERSTORE | 对给定的有序集合执行类似于集合的交集运算 | ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight] [ |
ZUNIONSTORE | 对给定的有序集合执行类似集合的并集运算 | ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight] [ |