Redis数据类型SortedSET
Sorted Set有点像Set和Hash的结合体。
和Set一样,它里面的元素是唯一的,类型是String,所以它可以理解为就是一个Set。
但是Set里面的元素是无序的,而Sorted Set里面的元素都带有一个浮点值,叫做分数(score),所以这一点和Hash有点像,因为每个元素都映射到了一个值。
Sorted Set是有序的,规则如下:
如果A.score > B.score,那么A > B。
如果A.score == B.score,那么A和B的大小就通过比较字符串来决定了,而A和B的字符串是不会相等的,因为Sorted Set里面的值都是唯一的。
ZADD
ZADD可以添加元素到Sorted Set,就和Set的SADD命令差不多
ZRANGE,ZREVRANGE
ZRANGE默认按分数由低到高把Sorted Set的元素显示出来
想按分数要从高到低显示,需要使用ZREVRANGE
也可以一同把分数显示出来,使用参数WITHSCORES
ZRANGEBYSCORE
ZRANGEBYSCORE可以按范围显示Sorted Set,格式是zrangebyscore key 分数下限 分数上限
可以看到结果也包括了分数下限和分数上限这两个边
ZREMRANGEBYSCORE
ZREMRANGEBYSCORE可以按范围移除元素
该命令返回的是移除元素的个数。
其中-inf和inf分别表示负无穷和正无穷。
ZRANK,ZREVRANK
ZRANK命令可以获得元素的排名, ZREVRANK 反之
词典分数
Sorted Set里分数相同的元素是按照词典分数(可以理解为比较字符串)进行排序的
ZRANGEBYLEX
ZRANGEBYLEX可以按词典范围展示Sorted Set
可以看到该命令把开头字目为A到F(不包括F)的元素都显示了出来
还有ZREVRANGEBYLEX,ZREMRANGEBYLEX,ZLEXCOUNT等针对词典的命令,请自行探索。
C#操作SortedSET
class Program
{
static void Main(string[] args)
{
ConnectionMultiplexer connectionMultiplexer = ConnectionMultiplexer.Connect("120.132.116.153:6379");
IDatabase db = connectionMultiplexer.GetDatabase();
db.KeyDelete("players");
db.KeyDelete("names");
//ZADD
db.SortedSetAdd("players", "a1", );
db.SortedSetAdd("players", new SortedSetEntry[]
{
new SortedSetEntry("b2",),
new SortedSetEntry("b3",),
new SortedSetEntry("a2",),
new SortedSetEntry("a5",),
new SortedSetEntry("a6",),
new SortedSetEntry("a3",),
new SortedSetEntry("a4",),
new SortedSetEntry("b4",),
new SortedSetEntry("b5",),
new SortedSetEntry("b6",),
});
//ZRANGE
var lists = db.SortedSetRangeByRank("players", , -);
foreach (var item in lists)
{
Console.WriteLine($"{item}");
}
Console.WriteLine("----------------------------"); //ZREVRANGE WITHSCORES
var lists1 = db.SortedSetRangeByRankWithScores("players", , -, Order.Descending);
foreach (var item in lists1)
{
Console.WriteLine($"{item}");
}
Console.WriteLine("----------------------------"); //ZRANGEBYSCORE WITHSCORES
var list2 = db.SortedSetRangeByScoreWithScores("players", , );
foreach (var item in list2)
{
Console.WriteLine($"{item}");
}
Console.WriteLine("----------------------------"); //ZREMRANGEBYSCORE
Console.WriteLine($"{db.SortedSetRemoveRangeByScore("players", double.NegativeInfinity, 15)}");
var lists3 = db.SortedSetRangeByRankWithScores("players", , -);
foreach (var item in lists3)
{
Console.WriteLine($"{item}");
}
Console.WriteLine("----------------------------");
//ZRANK
Console.WriteLine($"a1排名顺序:{db.SortedSetRank("players", "b2")}");
Console.WriteLine($"a1排名倒序:{db.SortedSetRank("players", "b2", Order.Descending)}");
Console.WriteLine("----------------------------"); db.SortedSetAdd("names", new SortedSetEntry[]
{
new SortedSetEntry("AB",),
new SortedSetEntry("BERRD",),
new SortedSetEntry("CBsdad",),
new SortedSetEntry("DBasd",),
new SortedSetEntry("EBasd",),
new SortedSetEntry("FBad",),
new SortedSetEntry("HBasd",),
new SortedSetEntry("3Basd",),
new SortedSetEntry("7Bfh",),
new SortedSetEntry("6Bfgh",),
});
//ZRANGEBYLEX
var lists4 = db.SortedSetRangeByValue("names", "C", "F");
foreach (var item in lists4)
{
Console.WriteLine($"{item}");
}
Console.ReadLine();
}
}
Redis数据类型SortedSET的更多相关文章
- 二:Redis数据类型
一.nosql(非关系性数据库): mongoDB hbase redis nulch hive pig mahout zookeeper 二:redis 数据类型 1.存储string: 常用命令 ...
- Redis数据类型和操作
<"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...
- 四、redis数据类型
四.redis数据类型 redis可以理解成一个全局的大字典,key就是数据的唯一标识符.根据key对应的值不同,可以划分成5个基本数据类型. 1. string类型: 字符串类型,是 Redis 中 ...
- 初识redis数据类型
初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...
- redis数据类型及使用场景
Redis数据类型 String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令: set,get,decr,incr,mge ...
- Redis数据类型介绍
Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...
- redis数据类型
Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...
- Redis-cluster集群【第一篇】:redis安装及redis数据类型
Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...
- Lua 数据类型和 Redis 数据类型之间转换
当 Lua 通过 call() 或 pcall() 函数执行 Redis 命令的时候,命令的返回值会被转换成 Lua 数据结构. 同样地,当 Lua 脚本在 Redis 内置的解释器里运行时,Lua ...
随机推荐
- 洛谷 P1494 [国家集训队] 小Z的袜子
题目概述: 小Z把N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务 ...
- [BJOI2019] 删数
https://www.luogu.org/problemnew/show/P5324 题解 首先我们需要弄清这个答案是什么. 对于一个长度为n的序列,那么它先删的肯定是\(n\),删完之后它就会跳到 ...
- MySQL基于GTIDs的MySQL Replication
MySQL M-S GTID 基于GTIDs的MySQL Replication 什么是GTIDs以及有什么特定? 1.GTIDs(Global transaction identifiers)全局事 ...
- win 10 dpi:150% 与 win 7 dpi:150% 的不同之处
由于 win 7 和 win 10 的 dpi 处理方式不同,导致我们写的客户端程序在 win 7 上运行正常,在 win 10(dpi:150%)上运行不正常了. 具体的描述,可参考:解决win10 ...
- 超简单CentOS7 配置阿里云yum源
1.打开centos的yum文件夹 输入命令cd /etc/yum.repos.d/ 2.用wget下载repo文件 输入命令wget http://mirrors.aliyun.com/repo ...
- Windows10配置JDK环境变量
一. 系统和JDK版本 系统:Windows10 JDK版本:1.8 二. 配置步骤 1. 右键单击“我的电脑” >> 属性 >> 高级系统设置 2. 环境变量 3. 系统变量 ...
- MySql 从SQL文件导入
1. 运行cmd进入命令模式,进入Mysql安装目录下的bin目录(即mysql.exe所在的目录): cd c:\"program Files"\MySQL\"MySQ ...
- Python3:输出当前目录所有目录和文件--walk()函数
有了前一篇文章的介绍,再输出目录,也不过是多写一个函数的事情了,我把它封装成了类~~ 发现walk()真的是一个超级方便好用的函数.这种情况下用listdir()是搞定不了的啦 import os c ...
- Visual studio 2017添加引用时报错未能正确加载ReferenceManagerPackage包的解决方法
vs2017添加引用时报错未能正确加载“ReferenceManagerPackage”包. - AusonSir - 博客园https://www.cnblogs.com/-bao/p/674941 ...
- springboot2.1.3集成单节点elasticsearch6.4.0
本案例写了一个关于医生医院搜索的例子,包括求和模式下的打分(分值与相关性有关)搜索,单节点时切勿配置节点名称和节点ip.github地址:https://github.com/zhzhair/spri ...