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]
可以看到确实是有序的

posted @   吉比特  阅读(1408)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
欢迎阅读『SpringBoot:Redis中的zset』
点击右上角即可分享
微信分享提示
主题色彩