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)的元素都显示了出来

还有ZREVRANGEBYLEXZREMRANGEBYLEXZLEXCOUNT等针对词典的命令,请自行探索。

C#操作SortedSET

 class Program{static void Main(string[] args){ConnectionMultiplexer connectionMultiplexer = ConnectionMultiplexer.Connect("120.132.116.153:6379");IDatabase db = connectionMultiplexer.GetDatabase(0);db.KeyDelete("players");db.KeyDelete("names");//ZADDdb.SortedSetAdd("players", "a1", 10);db.SortedSetAdd("players", new SortedSetEntry[]{new SortedSetEntry("b2",21),new SortedSetEntry("b3",22),new SortedSetEntry("a2",11),new SortedSetEntry("a5",14),new SortedSetEntry("a6",15),new SortedSetEntry("a3",12),new SortedSetEntry("a4",13),new SortedSetEntry("b4",23),new SortedSetEntry("b5",24),new SortedSetEntry("b6",25),});//ZRANGEvar lists = db.SortedSetRangeByRank("players", 0, -1);foreach (var item in lists){Console.WriteLine($"{item}");}Console.WriteLine("----------------------------");//ZREVRANGE WITHSCORES var lists1 = db.SortedSetRangeByRankWithScores("players", 0, -1, Order.Descending);foreach (var item in lists1){Console.WriteLine($"{item}");}Console.WriteLine("----------------------------");//ZRANGEBYSCORE WITHSCORES var list2 = db.SortedSetRangeByScoreWithScores("players", 10, 15);foreach (var item in list2){Console.WriteLine($"{item}");}Console.WriteLine("----------------------------");//ZREMRANGEBYSCOREConsole.WriteLine($"{db.SortedSetRemoveRangeByScore("players", double.NegativeInfinity, 15)}");var lists3 = db.SortedSetRangeByRankWithScores("players", 0, -1);foreach (var item in lists3){Console.WriteLine($"{item}");}Console.WriteLine("----------------------------");//ZRANKConsole.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",0),new SortedSetEntry("BERRD",0),new SortedSetEntry("CBsdad",0),new SortedSetEntry("DBasd",0),new SortedSetEntry("EBasd",0),new SortedSetEntry("FBad",0),new SortedSetEntry("HBasd",0),new SortedSetEntry("3Basd",0),new SortedSetEntry("7Bfh",0),new SortedSetEntry("6Bfgh",0),});//ZRANGEBYLEXvar lists4 = db.SortedSetRangeByValue("names", "C", "F");foreach (var item in lists4){Console.WriteLine($"{item}");}Console.ReadLine();}}

转载于:https://www.cnblogs.com/lgxlsm/p/10722748.html

Redis数据类型SortedSET相关推荐

  1. Redis数据类型与操作命令

    1. 键值对数据库 1.1 redis数据结构 redis的数据是 key-value 形式的键值对,其中 key 其实都是字符串的形式,而 value 的数据类型,也就是数据的保存形式,底层实现的方 ...

  2. Redis 数据类型之(底层解析)

    Redis 数据类型之(底层解析) Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redi ...

  3. Redis 数据类型介绍

    Redis 数据类型介绍 你也许已经知道Redis并不是简单的key-value存储,实际上他是一个数据结构服务器,支持不同类型的值.也就是说,你不必仅仅把字符串当作键所指向的值.下列这些数据类型都可 ...

  4. redis设置密码和启动 redis数据类型

    Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径.Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象. Redis运行在内存中 ...

  5. 【Redis】2. Redis数据类型 String以及key的设置约定

    学习资料 https://www.bilibili.com/video/BV1CJ411m7Gc?p=6 数据存储类型介绍 业务数据的特殊性 作为缓存使用 原始业务功能设计 秒杀 618活动 双十一活 ...

  6. 【Redis】杂项基础知识;Redis数据类型

    基础知识 Redis是一个内存数据库, 所有数据基本上都存在于内存当中, 会定时以追加或者快照的方式刷新到硬盘中. 由于redis是一个内存数据库, 所以读取写入的速度是非常快的, 所以经常被用来做数 ...

  7. Redis-cluster集群【第一篇】:redis安装及redis数据类型

    Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...

  8. redis数据类型list总结

    前言 在上一篇,我们简单介绍了redis数据类型中的String和hash两种常用数据类型的使用,本篇继续探讨redis数据结构中的另一种,list 列表 list简介 Redis列表是简单的字符串列 ...

  9. Redis 学习---(4)Redis 数据类型

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

  10. Redis数据类型详解(五种)

    Redis支持五种数据类型,即string(字符串).hash(哈希).list(列表).set(集合)及zset(sorted set:有序集合),云吞铺子分享Redis数据类型谅解: Redis数 ...

最新文章

  1. 收集Oracle常用命令----索引及约束
  2. Java:抽象方法和抽象类,抽象类应用模板方法模式,接口及使用
  3. springboot @value启动报错_打造一个 Spring Boot 注解启动控制开关
  4. virtualenv 模块
  5. Hadoop实战-中高级部分 之 Hadoop 集群安装
  6. 关于C#中实现两个应用程序消息通讯的问题
  7. Microsoft规划了.NET的未来发展
  8. 系统集成项目管理之何为系统集成
  9. Linux Wps 缺少字体
  10. 模式识别谱聚类matlab,基因表达谱聚类分析
  11. 今天给大家推荐一个Cleaner One for mac(系统清理优化工具)
  12. unity自动生成敌人_unity 2d AI 敌人 自动追踪(2)
  13. 李维看 .net 和 DELPHI 6 (含李维照片) (转)
  14. 如何计算CAN总线的负载率以及每帧耗时和每秒最多传输帧数
  15. synopsys 工具简介
  16. Python求助攻,哥哥姐姐们帮忙一下,网上下载的这个程序需要什么数据参数读入吗?帮忙写个主程序调用一下SPAC出结果,必有重谢
  17. QT数据库访问技术简介
  18. Win 8换徽标全面整合亮点功能大阅兵——乡巴佬下载
  19. 2.控制结构(选择、循环)
  20. Ubuntu 20.04 分区方案

热门文章

  1. Java 会是未来第一编程语言吗?
  2. MySQL 高性能表设计规范
  3. 5亿次Web攻击 怎么防住的?
  4. 人生苦短,请用 Chrome!
  5. 移动开发者的未来在哪里?
  6. Easy UI combobox实现类似 Select2的效果,下拉带搜索框
  7. 无交换机实现集群网络互联
  8. 2016年6月份那些最实用的 jQuery 插件专辑
  9. 一些可视化Javascript插件
  10. 第二阶段团队站立会议04