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] [ |