Redis的数据结构之sorted-set
存储Sorted-Set
Sorted-Set和Set的区别
Sorted-Set中的成员在集合中的位置是有序的
存储Sorted-set常用命令
添加元素
获得元素
删除元素
范围查询
扩展命令
zadd 添加元素 里面包括评分和值
127.0.0.1:6379> zadd sort1 5 a 4 b 6 c
(integer) 3
我们添加集合sort1 元素是a,b,c 评分分别是5,4,6
集合里的排序是根据评分从小到大排序的;
zrange是查找元素 -1代表是最后一个
127.0.0.1:6379> zrange sort1 0 -1
1) "b"
2) "a"
3) "c"
假如我们继续添加元素
这里分两种情况
假如次元素集合里面已经有了,则覆盖
我们继续添加b 此时评分改成7
127.0.0.1:6379> zadd sort1 7 b
(integer) 0
通过zscore 获取b的评分
127.0.0.1:6379> zscore sort1 b
"7"
发现已经修改了;
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "b"
假如添加的元素不在集合里,则添加进去
127.0.0.1:6379> zadd sort1 9 d
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "b"
4) "d"
删除元素zrem
127.0.0.1:6379> zrem sort1 b
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "d"
zcard 查看集合里的元素个数
127.0.0.1:6379> zcard sort1
(integer) 3
withscores 把评分也显示出来
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "a"
2) "5"
3) "c"
4) "6"
5) "d"
6) "9"
zrevrange 降序排列
127.0.0.1:6379> zrevrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "c"
4) "6"
5) "a"
6) "5"
我们再加两个元素
127.0.0.1:6379> zadd sort1 10 e 5 f
(integer) 2
zremrangebyrank 根据排名来删除元素 删除3个
127.0.0.1:6379> zremrangebyrank sort1 0 2
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "e"
4) "10"
再添加元素
127.0.0.1:6379> zadd sort1 11 f 16 g 18 h
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "e"
4) "10"
5) "f"
6) "11"
7) "g"
8) "16"
9) "h"
10) "18"
zremrangebyscore 根据具体评分范围来删除元素
127.0.0.1:6379> zremrangebyscore sort1 10 16
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "h"
4) "18"
再添加元素
127.0.0.1:6379> zadd sort1 20 i 23 j 30 k
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "h"
4) "18"
5) "i"
6) "20"
7) "j"
8) "23"
9) "k"
10) "30"
zrangebyscore 根据评分范围来查找元素
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores
1) "h"
2) "18"
3) "i"
4) "20"
5) "j"
6) "23"
limit 限定查找起始 类似分页
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2
1) "h"
2) "18"
3) "i"
4) "20"
zincrby 给指定元素加分
127.0.0.1:6379> zincrby sort1 5 h
"23"
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "i"
4) "20"
5) "h"
6) "23"
7) "j"
8) "23"
9) "k"
10) "30"
zcount 查找指定评分范围的元素个数
127.0.0.1:6379> zcount sort1 20 23
(integer) 3
Sorted-Set使用场景
大型在线游戏积分排行榜
构建索引数据
Redis的数据结构之sorted-set的更多相关文章
- 聊一聊Redis的数据结构
如果没有记错的话,应该是在两个月前把 我们经常看到此类的文章: Redis的五种数据结构 Redis的数据结构以及对应的使用场景 其实以数据结构这个词去说明Redis的String.Hash.List ...
- Redis常用数据结构
Redis常用数据结构包括字符串(strings),列表(lists),哈希(hashes),集合(sets),有序集合(sorted sets). redis的key最大不能超过512M,可通过re ...
- Redis的数据结构、通用操作及其特性
Redis的数据结构 五种数据类型: 字符串(String).字符串列表(list).字符串集合(set).有序字符串集合(sorted set).哈希(hash) key定义的注意点: 不要过长,不 ...
- 你真的懂redis的数据结构了吗?redis内部数据结构和外部数据结构揭秘
Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 很多人面试时都遇到过这种场景吧? 其实除了上面的几种常见数据结构,还需要加上数据结 ...
- Redis的数据结构
Redis的数据结构 redis是一种高级的key-value的存储系统,其中value支持五种数据类型. 字符串(String) 哈希(hash) 字符串列表(list) 字符串集合(set) 有序 ...
- redis内部数据结构深入浅出
最大感受,无论从设计还是源码,Redis都尽量做到简单,其中运用到的原理也通俗易懂.特别是源码,简洁易读,真正做到clean and clear, 这篇文章以unstable分支的源码为基准,先从大体 ...
- 2017-4-20/Redis的数据结构及应用场景
1. 谈谈你对redis的理解,它的应用场景. Redis是一个key-value存储系统,它支持存储的value类型包括string字符串.list链表.set集合.sorted Set有序集合和h ...
- redis内部数据结构和外部数据结构揭秘
Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 很多人面试时都遇到过这种场景吧? 其实除了上面的几种常见数据结构,还需要加上数据结 ...
- redis各种数据结构使用场景
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- 你真的懂了redis的数据结构吗?redis内部数据结构和外部数据结构揭秘
原文链接:https://mp.weixin.qq.com/s/hKpAxPE-9HJgV6GEdV4WoA Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有 ...
随机推荐
- 【原创】运维基础之keepalived
keepalived 2.0.12 官方:http://www.keepalived.org/ 一 简介 Keepalived is a routing software written in C. ...
- JavaScript入门学习笔记(异常处理)
try:语句测试代码块的错误,当try中的代码块出错时执行catch中的代码块. catch:语句处理错误: throw:语句创建或抛出自定义异常. 三者一起使用可以控制程序流并生成自定义异常信息. ...
- ILMerge在MSBuild与ILMerge在批处理文件中运行
ILMerge ILMerge是一个将多个.NET程序集合并到一个程序集中的实用程序.它可以免费使用,并以NuGet包的形式提供. 如果您在使用它时遇到任何问题,请与我们联系.(mbarnett at ...
- Java集合图谱
比较 是否有序 是否允许元素重复 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二叉排序树) Map AbstractM ...
- word 内容控件属性编辑
场景: 别人发给自己一份word模板,基于统一性,里面包含了很多“内容控件”,一般情况下,只需要根据内容控件进行编辑即可,但如果想对内容控件本身做编辑操作,例如删除等. 操作: 单击 文件>选项 ...
- nginx 配置laravel框架域名配置
server { listen 80; server_name admin.meiquick.local.com; #charset koi8-r; # access_log /var/log/ngi ...
- 网络编程-Python高级语法-深浅拷贝
知识点:深浅拷贝,浅拷贝拷贝的是最顶层的东西,深拷贝是拷贝最深层的东西,光说可能理解不了,看下图 1.拷贝可变类型 2.拷贝不可变类型 3.拷贝元祖,元组内数据是可变类型
- 导入Maven 工程pom.xml首行报错解决方法
1.利用IDE导入一个Maven工程,但是pom.xml文件首行报错,发现是maven版本需要升级 2.在pom.xml文件 增加配置 <properties> <maven-jar ...
- XIII Open Grodno SU Championship
A. Alice in the Wonderland 按题意模拟. #include<stdio.h> #include<iostream> #include<strin ...
- CSS_圣杯布局和双飞翼布局
参考: 圣杯布局的来历是2006年发在a list part上的这篇文章: http://alistapart.com/article/holygrail 双飞翼布局介绍-始于淘宝UED: http: ...