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();
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的更多相关文章

  1. 二:Redis数据类型

    一.nosql(非关系性数据库): mongoDB hbase redis nulch hive pig mahout zookeeper 二:redis 数据类型 1.存储string: 常用命令 ...

  2. Redis数据类型和操作

    <"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...

  3. 四、redis数据类型

    四.redis数据类型 redis可以理解成一个全局的大字典,key就是数据的唯一标识符.根据key对应的值不同,可以划分成5个基本数据类型. 1. string类型: 字符串类型,是 Redis 中 ...

  4. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  5. redis数据类型及使用场景

    Redis数据类型  String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令:  set,get,decr,incr,mge ...

  6. Redis数据类型介绍

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

  7. redis数据类型

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

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

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

  9. Lua 数据类型和 Redis 数据类型之间转换

    当 Lua 通过 call() 或 pcall() 函数执行 Redis 命令的时候,命令的返回值会被转换成 Lua 数据结构. 同样地,当 Lua 脚本在 Redis 内置的解释器里运行时,Lua ...

随机推荐

  1. freeCodeCamp中一些有趣的方法

    1. 过滤对象(找到数组中(collection)与之(source)匹配对象,过滤掉数组中(collection)不匹配对象) function where(collection, source) ...

  2. [BJOI2017]树的难题

    题目描述 给你一棵 n 个点的无根树. 树上的每条边具有颜色.一共有 m 种颜色,编号为 1 到 m.第 i 种颜色的权值为 ci. 对于一条树上的简单路径,路径上经过的所有边按顺序组成一个颜色序列, ...

  3. [HNOI2009]最小圈(分数规划+SPFA判负环)

    题解:求环长比环边个数的最小值,即求min{Σw[i]/|S|},其中i∈S.这题一眼二分,然后可以把边的个数进行转化,假设存在Σw[i]/|S|<=k,则Σw[i]-k|S|<=0,即Σ ...

  4. PTA编译总结求最大值及其下标

    代码: #include<stdio.h>    int main(void)    {    int i,index=0,n;    int a[10];    scanf(" ...

  5. 20175209 《Java程序设计》第八周学习总结

    20175209 <Java程序设计>第八周学习总结 一.教材知识点总结 1.泛型 1.泛型类声明: 格式 class People<E> People是泛型类名称 E是泛型列 ...

  6. 深度学习二、CNN(卷积神经网络)概念及理论

    一.卷积神经网络(CNN) 1.常见的CNN结构有:LeNet-5.AlexNet.ZFNet.VGGNet.ResNet等.目前效率最高的是ResNet. 2.主要的层次: 数据输入层:Input ...

  7. I2C(三) linux3.4(内核分析)

    目录 I2C(三) linux3.4(内核分析) (一)总线流程 bus.probe match i2c_device_probe (二)client注册 方式(一)静态加载 方式(二)指定设备 方式 ...

  8. 分布式协调服务Zookeeper集群监控JMX和ZkWeb应用对比

    分布式协调服务Zookeeper集群监控JMX和ZkWeb应用对比 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. JMX是用来远程监控Java应用的框架,这个也可以用来监控其他的J ...

  9. mysql之binlog

    binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日 ...

  10. 对于Sobel算子的学习

    本来想说很多目前对于 Sobel 算子的认识,但最终还是觉得对于其掌握程度太低,没有一个系统的理解,远不足以写博客,但为了12月不至于零输出,还是决定把自己学习过程中找到的相关资料进行分享. 等到一月 ...