本篇基于redis 4.0.11版本,学习列表(list)和集合(set)和有序集合(sorted set)相关命令。
- 列表按照插入顺序排序,可重复,可以添加一个元素到列表的头部(左边)或者尾部(右边)。
- 集合是 String 类型的无序集合,不能出现重复的数据。
- 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,但分数(score)却可以重复。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数权重来为集合中的成员进行从小到大的排序。
列表相关命令:
序号 | 命令 | 描述 | 实例 | 返回 |
LPUSH key value1 [value2] | 将一个或多个值插入到列表头部 | 将redis插入列表runoobkey中:LPUSH runoobkey redis |
成功:(integer) 1 失败:(integer) 0 |
|
LPUSHX key value | 将一个值插入到已存在的列表头部 | 将redis插入已有列表runoobkey2中:LPUSHX runoobkey2 redis |
成功:(integer) 1 失败:(integer) 0 |
|
LRANGE key start stop | 获取列表指定范围内的元素 | 获取runoobkey列表中的全部值:LRANGE runoobkey 0 -1 | 1) "mysql" 2) "mongodb" 3) "redis" 4) "redis" |
|
4 | BLPOP key1 [key2 ] timeout | 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 | 移出并获取列表list1的第一个元素,超时时间10s:BLPOP list1 10 | (nil) (10.02s) |
BRPOP key1 [key2 ] timeout | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 | 移出并获取列表runoobkey的最后一个元素,超时时间10s:BRPOP runoobkey 10 | 1) "runoobkey" # 被弹出元素所属的列表键 2) "redis" # 被弹出的元素 |
|
BRPOPLPUSH source destination timeout | 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 | 将最后一个值放到msg中,没有元素等10s:BRPOPLPUSH runoobkey msg 10 | "redis" # 被弹出的元素 | |
LINDEX key index | 通过索引获取列表中的元素 | 获取列表runoobkey第一个值:lindex runoobkey 0 | "mysql" | |
LINSERT key BEFORE|AFTER pivot value | 在列表的元素前或者后插入元素 | 在runoobkey列表"mongodb"前插入"insert":linsert runoobkey before "mongodb" "insert" | (integer) 3 | |
LLEN key | 获取列表长度 | llen runoobkey | "5" | |
LPOP key | 移出并获取列表的第一个元素 | lpop runoobkey | "bar" | |
LREM key count value | 移除列表元素 | lrem runoobk 0 123 | "2" | |
LSET key index value | 通过索引设置列表元素的值 | lset list1 1 123456 | OK | |
LTRIM key start stop | 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 | ltrim list1 0 1 | OK | |
RPOP key | 移除并获取列表最后一个元素 | rpop list1 | "1234" | |
RPOPLPUSH source destination | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 | rpoplpush list1 runoobkey | "12345" | |
RPUSH key value1 [value2] | 在列表中添加一个或多个值 | rpush list1 987 988 | "4" | |
17 | RPUSHX key value | 为已存在的列表添加值 |
集合相关命令:
序号 | 命令 | 描述 | 实例 | 返回 |
SADD key member1 [member2] | 向集合添加一个或多个成员 | 向集合runoobkey中添加redis:SADD runoobkey redis |
成功:(integer) 1 失败:(integer) 0 |
|
SCARD key | 获取集合的成员数 | 获取集合sets1成员数:scard sets1 | "3" | |
SDIFF key1 [key2] | 返回给定所有集合的差集 | 返回sets1和sets2差集:sdiff sets1 sets2 | 1) "redis" | |
SDIFFSTORE destination key1 [key2] | 返回给定所有集合的差集并存储在 destination 中 | 将sets1和sets2差集放sets3中:sdiffstore sets3 sets1 sets2 | OK | |
SINTER key1 [key2] | 返回给定所有集合的交集 | 返回sets1和sets2交集:sinter sets1 set2 | 1) "mongodb" | |
SINTERSTORE destination key1 [key2] | 返回给定所有集合的交集并存储在 destination 中 |
将sets1和sets2交集放sets4中:sinterstore sets4 sets1 sets2 |
OK | |
SISMEMBER key member | 判断 member 元素是否是集合 key 的成员 | 判断sets1中是否存在redis:SISMEMBER sets1 redis |
存在:(integer) 1 不存在:(integer) 0 |
|
SMEMBERS key | 返回集合中的所有成员 | SMEMBERS runoobkey | 1) "mysql" 2) "mongodb" 3) "redis" |
|
SMOVE source destination member | 将 member 元素从 source 集合移动到 destination 集合 | 将mysql从集合sets1移到sets4中:smove sets1 sets4 mysql |
成功:(integer) 1 失败:(integer) 0 |
|
SPOP key | 移除并返回集合中的一个随机元素 | spop sets2 | mongodb | |
SRANDMEMBER key [count] | 返回集合中一个或多个随机数 | 返回集合sets5中两个元素:srandmember sets5 2 | 1) "abcdef" 2) "abcdefgh" |
|
SREM key member1 [member2] | 移除集合中一个或多个成员 | 移除集合sets5中abc abcdfg:srem sets5 abc abcdfg |
成功:(integer) 1 失败:(integer) 0 |
|
SUNION key1 [key2] | 返回所有给定集合的并集 | 返回集合sets1 sets2 sets3并集:SUNION sets1 sets2 sets3 | 1) "postgresql" 2) "redis" 3) "mongodb" |
|
SUNIONSTORE destination key1 [key2] | 所有给定集合的并集存储在 destination 集合中 | |||
15 | SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素 | 查找sets5集合第二个元素 如果匹配m*的返回,不匹配返回空:sscan sets5 2 match m* | 1) "0" 2) 1) "mongodb" |
有序集合相关命令:
序号 | 命令 | 描述 | 实例 | 返回 |
ZADD key score1 member1 [score2 member2] | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 | ZADD runoobkey 1 redis | (integer) 1 | |
ZRANGE key start stop [WITHSCORES] | 通过索引区间返回有序集合成指定区间内的成员 | 返回有序集合sortedsets1中0到10的权重和值:zrange sortedsets1 0 10 withscores | 1) "redis" 2) "1" 3) "redis2" 4) "2" 5) "redis3" 6) "3" 7) "redis4" 8) "3" |
|
ZCARD key | 获取有序集合的成员数 | 返回有序集合sortedsets1成员数:zcard sortedsets1 | "4" | |
ZCOUNT key min max | 计算在有序集合中指定区间分数的成员数 | 返回有序集合中分数为2-3的成员数:zcount sortedsets1 2 3 | "3" | |
ZINCRBY key increment member | 有序集合中对指定成员的分数加上增量 increment | 给有序集合sortedsets1中redis加5:zincrby sortedsets1 5 redis | 增加后的值:"11" | |
ZINTERSTORE destination numkeys key [key ...] | 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 | 将sortedsets1和sortedsets2两个集合并集存到sortedsets10中:zinterstore sortedsets10 2 sortedsets1 sortedsets2 | 成功成员数量:(integer) 4 | |
ZLEXCOUNT key min max | 在有序集合中计算指定字典区间内成员数量 | 集合中大于等于redis 小于redis3的数量:zlexcount sortedsets1 [redis (redis3 集合全部数量:zlexcount sortedsets1 - + |
"1"; "4" |
|
ZRANGEBYLEX key min max [LIMIT offset count] | 通过字典区间返回有序集合的成员 | zrangebylex sortedsets7 (2 [6 | 1) "3" 2) "5" 3) "6" |
|
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] | 通过分数返回有序集合指定区间内的成员 | 返回集合中大于3的全部成员:ZRANGEBYSCORE sortedsets7 (3 +inf WITHSCORES |
1) "3" |
|
ZRANK key member | 返回有序集合中指定成员的索引 | 返回集合中6的索引:zrank sortedsets7 6 | "4" | |
ZREM key member [member ...] | 移除有序集合中的一个或多个成员 | 移除成员6:zrem sortedsets7 6 | ||
ZREMRANGEBYLEX key min max | 移除有序集合中给定的字典区间的所有成员 | 移除集合中大于4小于等于5的成员:zremrangebylex sortedsets7 (4 [5 | "1" | |
ZREMRANGEBYRANK key start stop | 移除有序集合中给定的排名区间的所有成员 | ZREMRANGEBYRANK sortedsets7 0 1 | "2" | |
ZREMRANGEBYSCORE key min max | 移除有序集合中给定的分数区间的所有成员 | |||
ZREVRANGE key start stop [WITHSCORES] | 返回有序集中指定区间内的成员,通过索引,分数从高到底 | ZREVRANGE sortedsets7 0 1 WITHSCORES | 1) "6" 2) "5" 3) "3" 4) "4" |
|
ZREVRANGEBYSCORE key max min [WITHSCORES] | 返回有序集中指定分数区间内的成员,分数从高到低排序 | |||
ZREVRANK key member | 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 | zrevrank sortedsets7 4; zrevrank sortedsets7 3 |
null; "1" |
|
ZSCORE key member | 返回有序集中,成员的分数值 | 返回集合3的分数值:zscore sortedsets7 3 | "4" | |
ZUNIONSTORE destination numkeys key [key ...] | 计算给定的一个或多个有序集的并集,并存储在新的 key 中 | |||
20 | ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素(包括元素成员和元素分值) | zscan sortedsets7 0 | 1) "0" 2) 1) "3" 2) "4" 3) "6" 4) "5" |
详见:Redis官方文档
上一篇:【Redis】命令学习笔记——哈希(hash)(15个超全字典版)
下一篇学习 HyperLogLog和GEO相关命令