Redis命令
1.redis五种数据结构
| 结构类型 | 可包含数据类型 | 结构读/写方式 |
|---|---|---|
| STRING | 字符串,整型或浮点型数值 | 对整个或部分字符串操作,增减整数和浮点数 |
| LIST | 字符串链表 | 可从两端弹出或压入数据,基于坐标截取,读取单个或多个项,按值查找或删除键 |
| SET | 无序不重复字符串的集合 | 增加,获取或删除单个项,检测成员关系,交、并、差操作,获取随机项 |
| HASH | 无序键值对哈希表 | 增加,获取或删除单个项,获取整个hash |
| ZSET(sorted set) | 按数值大小排序的映射 | 增加,获取或删除单个值,获取基于值范围或成员值的项 |
2.Redis命令
2.1 Strings
| 命令 | 作用 |
|---|---|
| GET | 获取给定key存储的数据 |
| SET | 设置给定key存储的数据 |
| DEL | 删除给定key存储的数据(所有类型适用) |
| 递增递减操作 | - |
| INCR | INCR key-name —— 使key存储的值加1 |
| DECR | DECR key-name —— 使key存储的值减1 |
| INCRBY | INCRBY key-name amount —— 使key存储的值增加给定的整数 |
| DECRBY | DECRBY key-name amount —— 使key存储的值减少给定的整数 |
| INCRBYFLOAT | INCRBYFLOAT key-name amount —— 使key存储的值增加给定的浮点数 |
| 字符串操作 | - |
| APPEND | APPEND key-name value —— 使key存储的字符串追加给定的值 |
| GETRANGE | GETRANGE key-name start end —— 获取从start到end的所包含的子字符串 |
| SETRANGE | SETRANGE key-name offset value —— 使子字符串从给定位置开始覆盖为给定值 |
| GETBIT | GETBIT key-name offset —— 将字节串作为比特串处理,并返回字符串中给定比特偏移量的比特值 |
| SETBIT | SETBIT key-name offset value —— 将字节串作为比特串处理,设置指定比特偏移量的值为给定比特 |
| BITCOUNT | BITCOUNT key-name [start end] —— 统计字符串中比特值为1的数量,可选参数为起始和结束位 |
| BITOP | BITOP operation dest-key key-name [key-name ...] —— 在提供的字符串执行一个位操作运算,AND, OR, XOR,或NOT, 存储结果到目标key |
2.2 Lists
| 命令 | 作用 |
|---|---|
| RPUSH | RPUSH key-name value [value ...] —— 从list右侧压入数据 |
| LPUSH | LPUSH key-name value [value ...] —— 从list左侧压入数据 |
| RPOP | RPOP key-name —— 删除并返回list最右侧的项 |
| LPOP | LPOP key-name —— 删除并返回list最左侧的项 |
| LINDEX | LINDEX key-name offset —— 返回指定位置的项 |
| LRANGE | LRANGE key-name start end —— 返回指定起止范围内的项 |
| LTRIM | LTRIM key-name start end —— 截掉start到end之间的项 |
| lists之间移动itmes | |
| BLPOP | BLPOP key-name [key-name] timeout —— 弹出首个非空LIST的最左侧的item,否则等待超时时间(单位: s) |
| BRPOP | BRPOP key-name [key-name ...] timeout —— 弹出首个非空LIST的最右侧的item,否则等待超时时间(单位: s) |
| RPOPLPUSH | RPOPLPUSH source-key dest-key —— 从source弹出最右侧的item并LPUSHes到destination,同时返回item给用户 |
| BRPOPLPUSH | BRPOPLPUSH source-key dest-key timeout —— 从source弹出最右侧的item并LPUSHes到destination,同时返回item给用户.如果source为空则等待超时(单位: s) |
2.3 Sets
| 命令 | 作用 |
|---|---|
| SADD | SADD key-name item [item ...] —— 将items加入set并返回增加的items的数量 |
| SREM | SREM key-name item [item ...] —— 删除items并返回被删除的items的数量 |
| SISMEMBER | SISMEMBER key-name item —— 返回一个item是否在SET中 |
| SCARD | SCARD key-name —— 返回SET中items的数量 |
| SMEMBERS | SMEMBERS key-name —— 以Python set类型返回SET中所有的items |
| SRANDMEMBER | SRANDMEMBER key-name [count] —— 从SET中返回一个或多个随机的items.当count是正数时,Redis返回无重复的随机item,当count是负数时,Redis返回随机items,可能有重复 |
| SPOP | SPOP key-name —— 移除并返回SET中随机的item |
| SMOV | SMOVE source-key dest-key item —— 如果source中有item,移除该item并加入到destination,如果移动成功则返回该item |
| 连接多sets的操作 | - |
| SDIFF | SDIFF key-name [key-name ...] —— 返回第一个SET中不在其他SETs的items(数学中的差集运算) |
| SDIFFSTORE | SDIFFSTORE dest-key key-name [key-name ...] —— 将第一个SET中不在其他SETs中的items存储在dest-key中(数学中的差集运算) |
| SINTER | SINTER key-name [key-name ...] —— 返回在所有SETs中都存在的items(数学中的交集运算) |
| SINTERSTORE | SINTERSTORE dest-key key-name [key-name ...] —— 将所SETs中都存在的items存储在dest-key中(数学中的交集运算) |
| SUNION | SUNION key-name [key-name ...] —— 返回至少在一个SETs中存在的items(数学中的并集运算) |
| SUNIONSTORE | SUNIONSTORE dest-key key-name [key-name ...] —— 将至在一个SETs中存在的items存储在dest-key中(数学中的并集运算) |
2.4 Hashes
| 命令 | 作用 |
|---|---|
| HMGET | HMGET key-name key [key ...] —— 获取HASH中的value段 |
| HMSET | HMSET key-name key value [key value ...] —— 设置HASH中的value段 |
| HDEL | HDEL key-name key [key ...] —— 删除HASH中的键值对,返回找到并删除的键值数量 |
| HLEN | HLEN key-name —— 返回HASH中的键值对数量 |
| HEXISTS | HEXISTS key-name key —— 返回给定key是否存在于HASH |
| HKEYS | HKEYS key-name —— 获取HASH中的keys |
| HVALS | HVALS key-name —— 获取HASH中的values |
| HGETALL | HGETALL key-name —— 获取HASH中的所有键值对 |
| HINCRBY | HINCRBY key-name key increment —— 使key中的value增加指定的整数 |
| HINCRBYFLOAT | HINCRBYFLOAT key-name key increment —— 使key中的value增加指定的浮点数 |
2.5 ZSET
| 命令 | 作用 | ||
|---|---|---|---|
| ZADD | ZADD key-name score member [score member ...] —— 将members和scores增加到ZSET |
||
| ZRED | ZREM key-name member [member ...] —— 从ZSET中移除指定members,返回移除的members数量 | ||
| ZCARD | ZCARD key-name —— 返回ZSET中的members数量 | ||
| ZINCRBY | ZINCRBY key-name increment member —— 在ZSET中增加member的score | ||
| ZCOUNT | ZCOUNT key-name min max —— 返回指定最小值和最大值之间的members数量 | ||
| ZRANK | ZRANK key-name member —— 返回ZSET中指定member的坐标 | ||
| ZSCORE | ZSCORE key-name member —— 返回ZSET中member的score | ||
| ZRANGE | ZRANGE key-name start stop [WITHSCORES] —— 从start和stop范围内返回members和可选的scores | ||
| zset其它命令 | - | ||
| ZREVRANK | ZREVRANK key-name member —— 返回逆序排序的member的序号 | ||
| ZREVANGE | ZREVRANGE key-name start stop [WITHSCORES] —— 获取给定范围的members,以逆序排列 | ||
| ZRANGEBYSCORE | ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] —— 获取min和max之间的members | ||
| ZREVRANGEBYSCORE | ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] —— 获取逆序排序的min和max之间的members | ||
| ZREMRANGEBYRANK | ZREMRANGEBYRANK key-name start stop —— 删除起始范围内的items | ||
| ZREMRANGEBYSCORE | ZREMRANGEBYRANK key-name min max —— 删除在min和max之间的scores的items | ||
| ZINTERSTORE | ZINTERSTORE dest-key key-count key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM | MIN | MAX] —— Performs a SET -like intersection of the provided ZSETs |
| ZUNIONSTORE | ZUNIONSTORE dest-key key-count key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM | MIN | MAX] —— Perform a SET-like union of the provided ZSETs |
2.6 Publish/subcribe(发布/订阅)
| 命令 | 作用 |
|---|---|
| SUBSCRIBE | SUBSCRIBE channel [channel ...] —— 订阅指定信道 |
| UNSUBSCRIBE | UNSUBSCRIBE [channel [channel ...]] —— 取消订阅指定信道,如果未指定channel则取消订阅所有信道 |
| PUBLISH | PUBLISH channel message —— 发布消息到指定信道 |
| PSUBSCRIBE | PSUBSCRIBE pattern [pattern] —— 发送消息广播到所有匹配给定模式的信道 |
| PUNSUBSCRIBE | PSUBSCRIBE pattern [pattern ...] —— 从匹配给定模式的信道中订阅消息广播 |
PUBLISH和SUBSCRIBE很有用,但是却不常用,有两个原因
- 第一个原因是Redis的系统可靠性问题.在老版本的Redis中,一个客户端从信道订阅消息,但是读取消息的速度不够快时,将会导致Redis自身维持一个非常大的输出缓冲区.如果这个缓冲区太大,将会导致Redis性能急剧下降甚至崩溃.现在版本的Redis没有这个问题,当超过
pubsub配置选项中的client-output-buffer-limit时会断开订阅的客户端. - 第二个原因是数据传输可靠性.在任何形式的网络系统中,你必须在假想你的操作在某一点会失败的前提下操作.通常的会在一段处理或重连.Python Redis客户端将会通过重连自动处理连接失败问题.但是在某些情况下订阅异常断开,订阅的消息在重连之前就发送了,客户端将永远无法收到这消息.当你依赖一条信道接受消息,Redis的
PUBLISH/SUBSCRIBE语义可能会令你失望.
2.7 其它命令
| 命令 | 作用 |
|---|---|
| SORT | SORT source-key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE dest-key] —— 按照提供选项排序LIST,SET或ZSET,并返回或存储结果 |
| - | - |
| PERSIST | PERSIST key-name —— 从一个key中移除过期数据 |
| TTL | TTL key-name —— 返回一个key的到期剩余时间 |
| EXPIRE | EXPIRE key-name seconds —— 以秒为单位设置key的过期时间 |
| EXPIREAT | EXPIREAT key-name timestamp —— 以指定的Unix时间戳形式设置过期时间 |
| PTTL | PTTL key-name —— 以毫秒为单位返回key的到期剩余时间 |
| PEXPIRE | PEXPIRE key-name milliseconds —— 以毫秒为单位设置key的过期时间 |
| PEXPIREAT | PEXPIREAT key-name timestamp-milliseconds —— 同EXPIREAT,时间戳格式为毫秒 |