Redis基本类型之zset
2022/1/6 2:11:48
本文主要是介绍Redis基本类型之zset,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
累了,学点轻松的,参考《Redis深度历险:核心原理与应用实践》。Redis yyds,高学习回报的技术。然后今天感觉我还是想做银行业的技术开发。老这么做外包式的技术没行业业务经验的提高,至于为何弯路如此,那是一言难尽了。
zset有序集合是Redis的特色数据结构,本身是一个集合,里边元素不会重复,而且还可以绑定一个score,可以按照分数进行排序。zset底层使用了跳表这种数据结构实现。
zset基本方法
zadd 向zset添加元素 zadd key score member:
[root@VM_0_11_centos ~]# redis-cli -c -p 7001 -a password
127.0.0.1:7001> zadd books 9.0 "thinkin Java"
-> Redirected to slot [15901] located at 122.51.112.187:7003
(integer) 1
122.51.112.187:7003> zadd books 8.9 "Java concurrency"
(integer) 1
122.51.112.187:7003> zadd books 8.6 "Netty in Action"
(integer) 1
zrange 遍历zset, 分数从小到大返回所有元素, 分数是double类型:
122.51.112.187:7003> zrange books 0 -1
- "Netty in Action"
- "Java concurrency"
- "thinkin Java"
0 -1表示从第0个开始到倒数第1个,也就是所有.
zrevrange 倒序遍历
122.51.112.187:7003> zrevrange books 0 -1
- "thinkin Java"
- "Java concurrency"
- "Netty in Action"
zcard 集合里有多少个元素zcard:
122.51.112.187:7003> zcard books
(integer) 3
zscore 获取某个元素的分数zscore:
122.51.112.187:7003> zscore books "Netty in Action"
"8.5999999999999996"
zrank 某个元素排名第几,从0开始:
122.51.112.187:7003> zrank books "Netty in Action"
(integer) 0
zrangebyscore 按分数区间返回元素 -inf表示负无穷:
122.51.112.187:7003> zrangebyscore books -inf 8.91
- "Netty in Action"
- "Java concurrency"
122.51.112.187:7003> zrangebyscore books -inf 8.91 withscores - "Netty in Action"
- "8.5999999999999996"
- "Java concurrency"
- "8.9000000000000004"
zrem 删除元素zrem
122.51.112.187:7003> zrem books "Java concurrency"
(integer) 1
122.51.112.187:7003> zrange books 0 -1
- "Netty in Action"
- "thinkin Java"
跳表,zset的底层实现
首先,zset需要支持随机的插入和删除,数组随机读比较好、插入和删除有大量的复制开销,所以不太适合。那只能选链表了,如果是普通的链表,想象一下一个排序好的链表新增一个元素,需要从头遍历到合适的插入位置进行插入,效率低,二分法也没法用、因为是数组用的。所以Redis使用了特殊的数据结构————跳表。
跳跃列表在原来链表的基础上,每隔几个元素选出来几个作为“上层”元素,然后用另外的指针链接起来形成上层链表,然后从上层链表里再选几个元素形成上上层链表,等等。查找插入点的时候从最上层链表开始定位,逐步缩小查找范围,最后找到插入点。
这篇关于Redis基本类型之zset的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识