首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

面试官:为何Redis使用跳表而非红黑树实现SortedSet

知道跳表(Skip List)是在看关于Redis的书的时候,Redis中的有序集合使用了跳表数据结构。接着就查了一些博客,来学习一下跳表。后面会使用Java代码来简单实现跳表。...Redis中的有序集合(Sorted Set)就是用跳表实现的。我们知道红黑树也能实现快速的插入、删除和查找操作。那Redis 为何不选择红黑树来实现呢? 跳表的意义究竟在于何处?...为何Redis要用跳表来实现有序集合,而不是红黑树?...Redis中的有序集合支持的核心操作主要支持: 插入一个数据 删除一个数据 查找一个数据 迭代输出有序序列 以上操作,红黑树也能完成,时间复杂度跟跳表一样。

33320

Redis SortedSet结构score字段丢失精度问题解决办法

一、问题现象 项目中采用Redis SortedSet存储用户的离线消息,score值存储的msgid(消息ID)。msgid采用snowflake算法生成,按照时间有序。...(参看《一个海量在线用户即时通讯系统(IM)的完整设计》) 生成的msgid有18位十进制整数,例如 215857550229364736 我们发现数值很接近的msgid,在redis中无法通过score...举个列子,在redis中tzset结构里存入如下几条数据 ZADD tzset 215857497028812800 test1 ZADD tzset 215857540511162369 test2...有以下几种想法 1、因为Redis缓存的消息最多保存15天(假设)或者最多保存多少条。能不能截去41位时间戳的部分高位,确保Redis缓存时间周期内时间戳长度够用就行呢?...同时解决了redis sorted set丢失精度的问题。

2.8K20

Jedis 操作 Set 与 SortedSet 详解

Redis 是一个强大的键值存储系统,而 Jedis 是 Redis 的 Java 客户端,为 Java 开发者提供了方便的操作接口。...在这篇博客中,我们将深入探讨 Jedis 如何操作 Redis 中的 Set 和 SortedSet 数据结构。无论你是初学者还是有一些经验的开发者,本文都将以友好的语言,通俗易懂的方式为你呈现。...连接 Redis 服务器在使用 Jedis 操作 Redis 之前,我们需要先连接到 Redis 服务器。...SortedSet 排序集合除了 Set,Redis 还提供了一种有序的集合数据结构,即 SortedSetSortedSet 中的每个元素都关联一个分数,通过这个分数可以实现集合的有序性。...总结通过本文的学习,你应该已经对使用 Jedis 操作 Redis 中的 Set 和 SortedSet 有了一定的了解。

19320
领券