redist命令操作--集合Set
Posted 木心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redist命令操作--集合Set相关的知识,希望对你有一定的参考价值。
1、Redis 集合(Set)
参考菜鸟教程:http://www.runoob.com/redis/redis-sets.html
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
向集合添加一个或多个成员
127.0.0.1:6379> sadd a redis
(integer) 1
获取集合的成员数
127.0.0.1:6379> scard a
(integer) 3
判断集合是否包含某元素,返回1表示包含
127.0.0.1:6379> sismember a redis (integer) 1 127.0.0.1:6379> sismember a redis1 (integer) 0
返回集合中的所有成员
127.0.0.1:6379> smembers a 1) "redis" 2) "mongodb" 3) "mysql"
2、Redis 有序集合(sorted set)
参考菜鸟教程:http://www.runoob.com/redis/redis-sorted-sets.html
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
向有序集合添加一个或多个成员,或者更新已存在成员的分数:ZADD key score1 member1 [score2 member2]
127.0.0.1:6379> zadd a 1 redis (integer) 1 127.0.0.1:6379> zadd a 2 mongodb (integer) 1 127.0.0.1:6379> zadd a 3 mysql (integer) 1 127.0.0.1:6379> zadd a 4 mysql (integer) 0 127.0.0.1:6379> zrange a 0 10 withscores 1) "redis" 2) "1" 3) "mongodb" 4) "2" 5) "mysql" 6) "4"
获取有序集合的成员数
127.0.0.1:6379> zcard a
(integer) 3
计算在有序集合中指定区间分数的成员数:zcount key min max
127.0.0.1:6379> zcount a 2 3 (integer) 1
127.0.0.1:6379> zcount a 2 4
(integer) 2
有序集合中对指定成员的分数score加上增量 increment
127.0.0.1:6379> zincrby a 10 mysql //msyql元素的score增加10
"14"
通过索引区间返回有序集合成指定区间内的成员:zrange key start stop [withscores]
127.0.0.1:6379> zrange a 0 10 withscores //索引区间 1) "redis" 2) "1" 3) "mongodb" 4) "2" 5) "mysql" 6) "14"
在有序集合中计算指定字典区间内成员数量:ZLEXCOUNT key min max
127.0.0.1:6379> zlexcount a - + (integer) 3 127.0.0.1:6379> zlexcount a [a [f (integer) 0
通过字典区间返回有序集合的成员:ZRANGEBYLEX key min max [LIMIT offset count]
127.0.0.1:6379> zrangebylex a - + 1) "redis" 2) "mongodb" 3) "mysql"
通过分数返回有序集合指定区间内的成员:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
127.0.0.1:6379> zrangebyscore a 2 14 withscores //分数区间
1) "mongodb"
2) "2"
3) "mysql"
4) "14"
返回有序集合中指定成员的索引
127.0.0.1:6379> zrank a mysql
(integer) 2
移除有序集合中的一个或多个成员
127.0.0.1:6379> zrem a mysql mongodb
(integer) 2
移除有序集合中给定的字典区间的所有成员:ZREMRANGEBYLEX key min max
127.0.0.1:6379> zremrangebylex a - +
(integer) 1
移除有序集合中给定的排名区间的所有成员:ZREMRANGEBYRANK key start stop 指定索引区间
127.0.0.1:6379> zadd a 1 redis (integer) 1 127.0.0.1:6379> zadd a 2 mongodb (integer) 1 127.0.0.1:6379> zadd a 3 mysql (integer) 1 127.0.0.1:6379> zrange a 0 10 withscores 1) "redis" 2) "1" 3) "mongodb" 4) "2" 5) "mysql" 6) "3" 127.0.0.1:6379> zremrangebyrank a 0 2 //索引区间 (integer) 3 127.0.0.1:6379> zrange a 0 10 withscores (empty list or set) 127.0.0.1:6379>
移除有序集合中给定的分数区间的所有成员
127.0.0.1:6379> zadd a 1 redis (integer) 1 127.0.0.1:6379> zadd a 2 mongodb (integer) 1 127.0.0.1:6379> zadd a 3 mysql (integer) 1 127.0.0.1:6379> zremrangebyscore a 2 3 //分数区间 (integer) 2 127.0.0.1:6379> zrange a 0 10 withscores 1) "redis" 2) "1"
返回有序集中指定区间内的成员,通过索引,分数从高到底
127.0.0.1:6379> zadd a 1 reids (integer) 1 127.0.0.1:6379> zadd a 10 mongodb (integer) 1 127.0.0.1:6379> zadd a 4 mysql (integer) 1 127.0.0.1:6379> zrange a 0 2 withscores 1) "reids" 2) "1" 3) "mysql" 4) "4" 5) "mongodb" 6) "10" 127.0.0.1:6379> zrevrange a 0 2 1) "mongodb" 2) "mysql" 3) "reids" 127.0.0.1:6379> zrevrange a 0 2 withscores //索引区间 1) "mongodb" 2) "10" 3) "mysql" 4) "4" 5) "reids" 6) "1"
返回有序集中指定分数区间内的成员,分数从高到低排序:ZREVRANGEBYSCORE key max min [WITHSCORES]
127.0.0.1:6379> zrevrangebyscore a 100 0 withscores
1) "mongodb"
2) "10"
3) "mysql"
4) "4"
5) "reids"
6) "1"
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
127.0.0.1:6379> zrevrangebyscore a 100 0 withscores 1) "mongodb" 2) "10" 3) "mysql" 4) "4" 5) "reids" 6) "1" 127.0.0.1:6379> zrevrank a mongodb (integer) 0 //排名从0开始 127.0.0.1:6379> zrevrank a mysql (integer) 1
返回有序集中,成员的分数值
127.0.0.1:6379> zscore a mysql
"4"
以上是关于redist命令操作--集合Set的主要内容,如果未能解决你的问题,请参考以下文章
Set,Sorted Set相关命令操作,批量插入及管道,事务
Redis支持的五种数据类型及相应操作:String(字符串),Hash(哈希),List(列表),Set(集合)及zset(sorted set:有序集合)