SpringBoot:Redis中的zset
zset被描述为有序集合,但RedisTemplate的OpsForZSet().range方法的返回值是set,那么:
这样直接查询zset返回set的操作会使得元素失去顺序吗?
先明确:Set是什么?Set一定无序吗?
Set是接口,Set接口的其中一个最常用的实现类HashSet是无序的,而Set可以做别的实现类如TreeSet,是可以保证元素有序的,但代价是查询效率做不到O(1)。
OpsForZSet().range方法的返回值是set接口,而这个接口由redis自行实现,保证元素依然有序。
我们来测试一下:
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class Tests{
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    public void ZSetTest(){
        String key = "Test";
        redisTemplate.opsForZSet().add(key, "a", 1);
        redisTemplate.opsForZSet().add(key, "b", 2);
        redisTemplate.opsForZSet().add(key, "c", 3);
        redisTemplate.opsForZSet().add(key, "d", 4);
        redisTemplate.opsForZSet().add(key, "e", 5);
        redisTemplate.opsForZSet().add(key, "f", 6);
        Set<Character> set = redisTemplate.opsForZSet().range(key, 0, -1);
        System.out.println(set);
    }
}
Output: [a, b, c, d, e, f]
可以看到确实是有序的
SpringBoot:Redis中的zset的更多相关文章
- 7、Redis中对ZSet类型的操作命令
		写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- ---------- ... 
- Python(Redis 中 Set/Zset 类型数据和其他操作)
		1.redis 基本操作命令 Set 操作 Set 集合就是不允许重复的列表 无序集合 sadd(name,values) 给 name 对应的集合中添加 1 个或多个元素 import redis ... 
- Redis-技术专区-让你彻底会使用“Redis中最陌生且最强大的集合”(ZSET)【前篇】
		前言介绍 很多小伙伴都跟我说,redis中,ZSet(有序集合)是他们最陌生的集合,同时也是觉得特别复杂的集合之一,在开发过程中经常会用到它,而且也是大家最不太有把握使用的集合,所以笔者就从ZSet集 ... 
- Springboot与ActiveMQ、Solr、Redis中分布式事物的初步探索
		Springboot与ActiveMQ.Solr.Redis中分布式事物的初步探索 解决的场景:事物中的异步问题,当要求数据库与solr服务器的最终一致时. 程序条件: 利用消息队列,当数据库添加成功 ... 
- Spring-Boot项目中配置redis注解缓存
		Spring-Boot项目中配置redis注解缓存 在pom中添加redis缓存支持依赖 <dependency> <groupId>org.springframework.b ... 
- SpringBoot项目中,Redis的初次使用
		1.引入Redis依赖包,在application.yml中配置redis <dependency> <groupId>org.springframework.boot< ... 
- SpringBoot + Redis:基本配置及使用
		注:本篇博客SpringBoot版本为2.1.5.RELEASE,SpringBoot1.0版本有些配置不适用 一.SpringBoot 配置Redis 1.1 pom 引入spring-boot-s ... 
- Redis系列之key操作命令与Redis中的事务详解(六)
		序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ... 
- Redis中的关系查询(范围查询,模糊查询等...)
		本文部分转自于:http://blog.csdn.net/dc_726/article/details/42784317 本文对Redis如何保存关系型数据,以及如何对其匹配.范围.模糊查询进行举例讲 ... 
随机推荐
- 【CSAPP】Shell Lab 实验笔记
			shlab这节是要求写个支持任务(job)功能的简易shell,主要考察了linux信号机制的相关内容.难度上如果熟读了<CSAPP>的"异常控制流"一章,应该是可以不 ... 
- OpenStack平台调度策略优化
			OpenStack平台报错分析 在OpenStack平台经历大并发的时候,比如同一个平台,大量的用户同时创建云主机(单个用户创建大量云主机不会触发此种现象),会达到云平台的性能瓶颈,导致创建云主机报错 ... 
- v82.01 鸿蒙内核源码分析 (协处理器篇) | CPU 的好帮手 | 百篇博客分析 OpenHarmony 源码
			本篇关键词:CP15 .MCR.MRC.ASID.MMU 硬件架构相关篇为: v65.01 鸿蒙内核源码分析(芯片模式) | 回顾芯片行业各位大佬 v66.03 鸿蒙内核源码分析(ARM架构) | A ... 
- HttpResponse,render,redirect,静态文件配置,request对象方法,pycharm连接MySQL,django连接MySQL,django ORM
			HttpResponse 主要用于返回字符串类型的数据 def index(request): return HttpResponse('index页面') 在页面中就会显示 index页面 rend ... 
- redis & redis sentinel
			Redis 命令参考 Redis Sentinel Cheat Sheet Redis 哨兵节点之间相互自动发现机制(自动重写哨兵节点的配置文件) Redis哨兵模式(sentinel)学习总结及部署 ... 
- elemetnUI表格分别给列表每一个按钮加loading
			// 获取列表数据的时候--添加按钮loading this.list = this.list.map((item) => { this.$set(item, "dataLoading ... 
- Java面试宝典学习笔记【2020】
			Java面试题总结 一.Java基础 1)Java有没有goto? goto是C语言中的,通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能.Java保留了这个关键字但是没有使用 ... 
- c++ 超长整数减法 高精度减法
			c++ 超长整数减法 高精度减法 实现思路 和加法类似,设置临时变量记录借位 当对应位数相减得到的结果大于等于0时,该位数字为本身值,否则需要加上借位的10.则\(t=(t+10)%10\) 打卡代码 ... 
- 不忍了,快速下载Visual Studio Code
			更新记录 本文迁移自Panda666原博客,原发布时间:2021年5月2日. 奇怪的原因 因为一些众所周知的原因,在国内下载Visual Studio Code的速度比较慢,所以我们需要一些方法来加快 ... 
- 8.shell编程之免交互
			shell编程之免交互 目录 shell编程之免交互 Here Document免交互 免交互定义 Here Document变量设定 多行的注释 expect expect 定义 expect基本命 ... 
