Redis 5种数据类型的常用命令
先了解Redis的大致作用和内容:https://github.com/JasonLai256/the-little-redis-book/blob/master/cn/redis.md
Redis 命令中文文档:http://doc.redisfans.com
字符串 string、散列类型 hash、列表类型 list、集合类型 set、有序集合类型 zset
Redis的命令是不区分大小写的
常用命令:
key | 含义 |
---|---|
keys * | 获取所有的key |
EXISTS key | 判断一个键是否存在 |
DEL key [key …] | 删除键 |
TYPE key | 获得键值的数据类型 |
字符串类型
命令
key | 含义 |
---|---|
SET key value | 赋值 |
GET key | 取值 |
INCR key | 递增数字 |
INCRBY key increment | 每次给key值增加increment |
DECR key DECRBY key decrement |
递减键值 每次递减decrement |
INCRBYFLOAT key increment | 增加指定浮点数(双精度) |
APPEND key value | 向尾部追加值 |
STRLEN key | 获取字符串长度 |
MGET key1 key2 .. | 同时获得多个键值 |
MSET key1 value1 key2 value2 .. | 同时设置多个键值 |
散列类型
HSET 不区分插入和更新操作,返回值为1表示插入操作,返回值为0表示更新操作
key | 含义 |
---|---|
HSET key field value HGET key field HMSET key field value [field value …] HMGET key field [field …] HGETALL key |
赋值 取值 同时给多个字段赋值 同时取多个字段值 获得key的所有字段值 |
HEXISTS key field | 判断字段是否存在 |
HSETNX key field value | 如果field 存在就不执行添加操作 |
HINCRBY key field increment | 增加数字 ,hash没有 HINCR 命令 |
HDEL key field [field …] | 删除一个或多个字段 |
HKEYS key | 只获取字段名 |
HVALS key | 只获取字段值 |
HLEN key | 获得字段数量 |
列表类型
key | 含义 |
---|---|
LPUSH key value [value …] | 向列表左边增加元素 |
RPUSH key value [value …] | 向列表右边增加元素 |
LPOP key RPOP key |
从列表两端移除并返回元素值 |
LLEN key | 获取列表中元素的个数 |
LRANGE key start stop | 获得列表从 start到 stop之间的所有元素 (包含两端的元素) 索引从0开始;支持负数,负数表示从右边开始 |
LREM key count value | 删除列表中前count个值为value的元素: 当 count > 0时,列表从左边开始删除 当 count < 0时,列表从右边开始删除 当 count = 0时,列表删除所有值为 value的元素 |
LINDEX key index LSET key index value |
获得/设置指定索引的元素值 |
LTRIM key start end | 删除指定索引范围之外的所有元素 (指定范围的方法与LRANGE 相同) |
LINSERT key BEFORE|AFTER pivot value | 向列表中插入元素 先从左到右查找值为 pivot 的元素 然后在元素的前面/后面插入value值 |
RPOPLPUSH source destination | 将元素从一个列表source 转到另一个列表 destination |
集合类型
key | 含义 |
---|---|
SADD key member [member ..] | 添加元素(如某元素已存在就忽略) |
SREM key member [member ..] | 删除元素 |
SMEMBERS key | 获得集合key中的所有元素 |
SISMEMBER key member | 判断元素是否在集合中 |
SDIFF key [key1 key2 ..] | 差集运算(属于key1且不属于key2的元素构成的集合) |
SINTER key [key1 key2 ..] | 交集运算(属于key1且属于key2的元素构成的集合) |
SUNION key [key1 key2 ..] | 并集运算(属于key1或属于key2的元素构成的集合) |
SDIFFSTORE destination key [key …] | 和SDIFF命令功能一样 但它不会直接返回运算结果, 而是存储在destination键中 SINTER和SUNION也有对应的命令 |
SCARD key | 而是将结果存储在destination键中。获得集合中元素个数 |
SRANDMEMBER key [count] | 随机获得集合中的元素 |
有序集合类型
有序集合类型算得上是Redis的5种数据类型中最高级的类型了。
在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数,这使得我们 不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能够获得分数最高 (或最低)的前N个元素、获得指定分数范围内的元素等与分数有关的操作。虽然集合中每 个元素都是不同的,但是它们的分数却可以相同。
有序集合类型在某些方面和列表类型有些相似,但他们应用场景是不同的。
- 列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元 素的应用。
- 有序集合类型是使用散列表和跳跃表(Skip list)实现的,所以即使读取位于中间部分的数据速度也很快(时间复杂度是O(log(N)))。
- 列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)。
- 有序集合要比列表类型更耗费内存。
key | 含义 |
---|---|
ZADD key score member [score member …] | 增加元素 ,score 是元素关联的分数 |
ZSCORE key member | 获得元素的分数 |
ZRANGE key start stop [WITHSCORES] | 获得排名在某个范围的元素列表(从大到小) 加 WITHSCORES 表示同时显示分数; 索引从0开始,-1 表示最后一个 |
ZREVRANGE key start stop [WITHSCORES] | 和 ZRANGE 相似,但是从小到大排序 |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] | 获得指定分数范围的元素 |
ZCARD key | 获得集合中元素的数量 |
ZCOUNT key min max | 获得指定分数范围内的元素个数 |
ZREM key member [member …] | 删除一个或多个元素 |
ZREMRANGEBYRANK key start stop | 先从小到大排序,再删除 start 到 stop的元素 |
ZREMRANGEBYSCORE key min max | 按照分数范围删除元素 |
ZRANK key member | 获得元素的排名 |
计算有序集合的交集:
ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATESUM|MIN|MAX]