扫码阅读
手机扫码阅读
Redis中Set底层跟Java一样吗?
36 2024-11-28
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:Redis中Set底层跟Java一样吗?
文章来源:
江南一点雨
扫码关注公众号
一 Java 里的 Set
Redis 中的 Set 类型与 Java 中的 Set 类型有相似之处,都具有唯一性和无序性。然而,Java 中不同类型的 Set 底层均使用 Map 实现,具体包括:
- HashSet:使用 HashMap 实现,元素作为键,提供快速的插入、删除和查找操作,时间复杂度为 O(1)。
- TreeSet:使用 TreeMap 实现(红黑树),元素排序,提供有序集合操作,时间复杂度为 O(logn)。
- LinkedHashSet:使用 LinkedHashMap 实现,维护插入顺序,时间复杂度为 O(1)。
- EnumSet:为枚举类型元素设计,使用位向量存储,高效存储和操作,时间复杂度为 O(1)。
二 Redis 的 Set
Redis 中的 Set 根据元素数量和类型采用两种底层数据结构:intset 和 hashtable。
2.1 intset
当所有元素都是整数且小于 512 个时,Redis 使用 intset 结构,它是一个紧凑的无序整数数组,支持快速的插入和删除操作,不保持元素顺序。intset 内部根据整数大小使用不同字节数存储(1、2、4 或 8 字节),并且编码格式可以升级但不降级。
2.2 hashtable
当元素不是整数或超过 512 个时,Redis 使用 hashtable 结构,它可以存储任意类型数据,提供快速的插入、查找和删除操作,同样不保持元素顺序。
Redis 会根据集合元素的变化自动转换数据结构,以高效使用内存。
Redis 视频课程
松哥最近录制了一套 Redis 视频教程,涵盖 Redis 的基本到高级用法、分布式锁、限流、持久化、事务、集群等内容,以及面试题解析,课程总长约 22.7 小时,提供案例代码和笔记,配有微信答疑群。课程价格为 ¥499。
感兴趣的可以联系松哥获取。
想要了解更多内容?
查看原文:Redis中Set底层跟Java一样吗?
文章来源:
江南一点雨
扫码关注公众号
江南一点雨的其他文章
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线