`
bigboy
  • 浏览: 167888 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Redis sorted set操作

 
阅读更多

 

sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加

修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有

两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。 

 

和set一样sorted  set也是string类型元素的集合,不同的是每个元素都会关联一个double

类型的score。sorted set的实现是skip list和hash table的混合体。

 

当元素被添加到集合中时,一个元素到score的映射被添加到hash  table中,所以给定一个

元素获取score的开销是O(1),另一个score到元素的映射被添加到skip list,并按照score排

序,所以就可以有序的获取集合中的元素。添加,删除操作开销都是O(log(N))和skip list的

开销一致,redis 的skip list实现用的是双向链表,这样就可以逆序从尾部取元素。sorted set最

经常的使用方式应该是作为索引来使用.我们可以把要排序的字段作为score存储,对象的id

当元素存储.

 

redis 127.0.0.1:6379> zadd mysset 1 one 往集合中添加指定score的元素

(integer) 1

redis 127.0.0.1:6379> zadd mysset 2 two

(integer) 1

redis 127.0.0.1:6379> zadd mysset 3 two

(integer) 0

redis 127.0.0.1:6379> zrang mysset 0 -1 withscores 

(error) ERR unknown command 'zrang'

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores 列出所有的元素

1) "one"

2) "1"

3) "two"

4) "3"

redis 127.0.0.1:6379> zrem mysset two 删除集合中的指定元素

(integer) 1

redis 127.0.0.1:6379> zrange mysset 0 -1  withscores

1) "one"

2) "1"

redis 127.0.0.1:6379> zincrby mysset 2 one 增加指定元素的score值

"3"

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

1) "one"

2) "3"

redis 127.0.0.1:6379> zadd mysset 1 two

(integer) 1

redis 127.0.0.1:6379> zadd mysset 2 three

(integer) 1

redis 127.0.0.1:6379> zadd mysset 3 four

(integer) 1

redis 127.0.0.1:6379> zadd mysset -1 five

(integer) 1

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

 1) "five"

 2) "-1"

 3) "two"

 4) "1"

 5) "three"

 6) "2"

 7) "four"

 8) "3"

 9) "one"

10) "3"

redis 127.0.0.1:6379> zrank mysset

(error) ERR wrong number of arguments for 'zrank' command

redis 127.0.0.1:6379> zrank mysset two 将集合从小到大的顺序排列取出指定元素的下标

(integer) 1

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

 1) "five"

 2) "-1"

 3) "two"

 4) "1"

 5) "three"

 6) "2"

 7) "four"

 8) "3"

 9) "one"

10) "3"

redis 127.0.0.1:6379> zrevrank mysset two 返回名称为key的zset中member元素的排名(按score从大到小排序)即下标

(integer) 3

redis 127.0.0.1:6379> zrevrange mysset 0 -1 withscores

 1) "one"

 2) "3"

 3) "four"

 4) "3"

 5) "three"

 6) "2"

 7) "two"

 8) "1"

 9) "five"

10) "-1"

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

 1) "five"

 2) "-1"

 3) "two"

 4) "1"

 5) "three"

 6) "2"

 7) "four"

 8) "3"

 9) "one"

10) "3"

redis 127.0.0.1:6379> zrangebyscore mysset 2 4 withscores  返回集合中score在给定区间的元素 

1) "three"

2) "2"

3) "four"

4) "3"

5) "one"

6) "3"

redis 127.0.0.1:6379> zcount mysset 2 3 返回集合中score在给定区间的数量 

(integer) 3

redis 127.0.0.1:6379> zcard mysset  返回集合中元素个数 

(integer) 5

redis 127.0.0.1:6379> zscore mysset two  返回给定元素对应的score

"1"

redis 127.0.0.1:6379> zremrangebyrank mysset 3 3  删除集合中排名在给定区间的元素

(integer) 1

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores 

1) "five"

2) "-1"

3) "two"

4) "1"

5) "three"

6) "2"

7) "one"

8) "3"

redis 127.0.0.1:6379> zremrangebyscore mysset 1 2 删除集合中score在给定区间的元素 

(integer) 2

redis 127.0.0.1:6379> zrange mysset 0 -1 withscores

1) "five"

2) "-1"

3) "one"

4) "3"

 

 

 

分享到:
评论

相关推荐

    Node.js + Redis Sorted Set实现任务队列

    需求:功能 A 需要调用第三方 API 获取数据,而第三方 API 自身是异步处理方式,在调用后会返回数据与状态 { data: “查询结果”, “status”: “正在异步处理中”...根据以上问题,想到使用 Node.js + Redis sorted se

    redis的sorted set实现延时队列

    redis的sorted set实现延时队列

    redis帮助文档之sorted-set.md

    redis帮助文档之sorted_set

    redis的list,set,hash,sorted set,skiplist 1

    redis

    Redis 有序集合(sorted set)1

    Redis 有序集合命令命令及描述ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在

    Redis学习资料

    Redis学习手册 Key操作命令 doc Redis学习手册 List数据类型 doc Redis学习手册 Set数据类型 doc Redis学习手册 Sorted Sets数据类型 doc Redis学习手册 String数据类型 doc Redis学习手册 主从复制 doc Redis学习...

    Redis从入门到精通(10):redis的sorted_set数据类型详解

    文章目录sorted_set数据类型常用操作注意事项实际案例 sorted_set数据类型 在前面set的基础上,对每个元素增加一个score关键字,然后按照score的内容去进行排序。score关键字的内容可以选择显示或者不显示。 常用...

    Redis-x64-5.0.10

    它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些...

    Redis可视化工具安装包(redis管理视图)

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redis所用jar包

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redis可视化工具、免费.中文

    Sorted Set: 有序集合 Redis 发布订阅 Redis 事务 Redis 脚本 Redis 服务器 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据...

    redis学习pdf

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redis学习相关资料

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    4-redis入门.pdf

    Redis 支持存储的value类型丰富,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型) Redis性能极高,读的速度可高达110000次/s,写的速度可高达81000次/s 。 Redis的所有...

    redis学习笔记

    因为它的 value 不仅包括基本的 string 类型还有 list,set ,sorted set 和 hash 类型。当 然这些类型的元素也都是 string 类型。也就是说 list,set 这些集合类型也只能包含 string 类型。你可以在这些类型上做很多...

    redis 5.0 rc1 windows

    新的 sorted set 命令:ZPOPMIN / MAX 和阻塞变量 主动碎片整理 V2 增强 HyperLogLog 实现 更好的内存统计报告 许多带有子命令的命令现在都有一个 HELP 子命令 客户端经常连接和断开连接时性能更好 错误修复和...

    redis架构图

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redisCluster.zip

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redis 源代码

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

Global site tag (gtag.js) - Google Analytics