关闭

Redis有序集合

标签: redis
195人阅读 评论(0) 收藏 举报
分类:

Redis 有序集合(sorted set)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。 

实例

redis 127.0.0.1:6379> ZADD runoobkey 1 redis
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 2 mongodb
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 0
redis 127.0.0.1:6379> ZADD runoobkey 4 mysql
(integer) 0
redis 127.0.0.1:6379> ZRANGE runoobkey 0 10 WITHSCORES

1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"

在以上实例中我们通过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。


Redis 有序集合命令

下表列出了 redis 有序集合的基本命令:

序号 命令及描述
1 ZADD key score1 member1 [score2 member2] 
向有序集合添加一个或多个成员,或者更新已存在成员的分数
2 ZCARD key 
获取有序集合的成员数
3 ZCOUNT key min max 
计算在有序集合中指定区间分数的成员数
4 ZINCRBY key increment member 
有序集合中对指定成员的分数加上增量 increment
5 ZINTERSTORE destination numkeys key [key ...] 
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
6 ZLEXCOUNT key min max 
在有序集合中计算指定字典区间内成员数量
7 ZRANGE key start stop [WITHSCORES] 
通过索引区间返回有序集合成指定区间内的成员
8 ZRANGEBYLEX key min max [LIMIT offset count] 
通过字典区间返回有序集合的成员
9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 
通过分数返回有序集合指定区间内的成员
10 ZRANK key member 
返回有序集合中指定成员的索引
11 ZREM key member [member ...] 
移除有序集合中的一个或多个成员
12 ZREMRANGEBYLEX key min max 
移除有序集合中给定的字典区间的所有成员
13 ZREMRANGEBYRANK key start stop 
移除有序集合中给定的排名区间的所有成员
14 ZREMRANGEBYSCORE key min max 
移除有序集合中给定的分数区间的所有成员
15 ZREVRANGE key start stop [WITHSCORES] 
返回有序集中指定区间内的成员,通过索引,分数从高到底
16 ZREVRANGEBYSCORE key max min [WITHSCORES] 
返回有序集中指定分数区间内的成员,分数从高到低排序
17 ZREVRANK key member 
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
18 ZSCORE key member 
返回有序集中,成员的分数值
19 ZUNIONSTORE destination numkeys key [key ...] 
计算给定的一个或多个有序集的并集,并存储在新的 key 中
20 ZSCAN key cursor [MATCH pattern] [COUNT count] 
迭代有序集合中的元素(包括元素成员和元素分值)
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

redis有序集合性能 列表、集合、有序集合

原文地址: redis有序集合性能 列表、集合、有序集合 1.1 列表   列表(list)类型是用来存储多个字符串,元素从左到右组成一个有序的集合.列表中的每个字符串被称为元素(elemen...
  • ttomqq
  • ttomqq
  • 2017-11-16 10:45
  • 165

四:redis的sets类型相关操作(有序和无序集合)

redis的sets类型相关操作(有序和无序集合)
  • leyangjun
  • leyangjun
  • 2014-07-08 19:20
  • 1354

php-redis中有序集合 zset的使用

ZSET(stored set)和 set 一样是字符串的集合,不同的是每个元素都会关联一个 double 类型的 score 。实现使用的是 skip list 和 hash table ,...
  • qq_36031499
  • qq_36031499
  • 2016-11-12 09:10
  • 363

Redis 有序集合

ZADD ZADD key score member [[score ][socre member]...] 将一个或多个member元素及其score值加入到有序集合key当中 如果某个 me...
  • ghf6251
  • ghf6251
  • 2017-04-15 10:30
  • 283

Redis研究(八)—有序集合类型 1

一、介绍 sorted set为集合中的每个元素都关联了一个分数,所以可以获得分数最高或者最低的前N个元素,获得指定分数范围内的元素等与分数有关的操作。虽然集合中每个元素都是不同的,但是他们的分数却...
  • wtyvhreal
  • wtyvhreal
  • 2015-01-17 13:26
  • 2705

Redis从基础命令到实战之有序集合类型(SortedSet)

有序集合类型是Redis五种数据类型中最高级的、也是最复杂的类型。有序集合具有集合类型的特性,在其基础上给每个元素关联了一个分值,或称为权重,操作时既可以在添加元素时指定分值,也可以单独修改集合中某一...
  • autfish
  • autfish
  • 2016-06-23 15:13
  • 8822

redis有序集合中是否存在某个成员

redis命令使用参考网页:http://redis.cn/commands.html有序集合中,redis没有命令直接判断有序集合中是否存在某个成员,自行通过代码实现,示例代码如下:#include...
  • tennysonsky
  • tennysonsky
  • 2017-04-30 10:56
  • 1804

redis实现有序的消息队列

redis是什么东西就不多说了,网上文章一搜一大堆。首先来说一下我要实现的功能:类似一个消息中转站吧,如果有人要发送消息,先将消息发到我这里来,然后我这边进行转发,为的就是有一个统一的管理和修改时方便...
  • qq_35587839
  • qq_35587839
  • 2016-09-26 09:26
  • 217811

Redis源码解析(四):redis之数据类型哈希表、列表、集合和有序集合

哈希表也是redis支持的数据结构之一,它使用REDIS_ENCODING_ZIPLIST(压缩列表) 和REDIS_ENCODING_HT(数据字典) 两种编码方式。     当哈希表使用压缩列表时...
  • flashflight
  • flashflight
  • 2015-04-14 23:18
  • 3138

多个redis有序集合组合如何实现分页

多个redis有序集合组合如何实现分页   需求:现在将不同类别的数据放入不同的redis有序集合key中,查询的时候不区分类别,进行统一的查询。 redis分页实体: import java...
  • wangmuming
  • wangmuming
  • 2016-10-11 12:01
  • 2110
    个人资料
    • 访问:8852次
    • 积分:295
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:48篇
    • 译文:0篇
    • 评论:1条