☰
Redis 数据结构总结
2026/10/14 18:58:24 网站建设 项目流程

一张图!

/**
* 1.String
*sds(简单动态字符串)
*
* 2.List
*2.1. 双端链表(quicklist)(Redis 3.2 及以后版本)
* 2.2 压缩列表(ziplist)(Redis 3.2 之前版本)
*
* 3.Set
* 3.1. 整数集合(intset) 小于512 个元素
* 3.2.哈希表(hashtable),里面两个哈希表的实现 dict(字典)
*
* 4.Hash
* 4.1 压缩列表(ziplist)小于512 个元素
* 4.2哈希表(hashtable),里面两个哈希表的实现 dict(字典)
*
* 5.SortedSet 小于128 个元素
* 5.1.压缩列表(ziplist):适合存储少量数据,内存使用效率高。
* 5.2.跳表(skiplist):适合存储大量数据,支持高效的排序和范围查询。
*
*/

Redis 的高级数据结构和模块扩展了其功能,适用于多种复杂场景:

数据结构 应用场景
HyperLogLog 基数统计(如 UV 统计)
Bitmaps 用户签到、状态存储
GEO 地理位置(geography)查询
Streams 消息队列、实时数据处理
RedisJSON JSON 数据存储与操作
RedisGraph 图(graph)数据存储与查询
RedisBloom 去重、热点统计
TimeSeries 时间序列数据存储与分析

===================Redis 数据结构总结===================

截至 Redis 最新版本(Redis 7.x,知识截止日期为 2023 年),Redis 提供了以下数据结构和模块,涵盖了基础数据结构和高级数据结构。以下是 Redis 的完整数据结构列表:

基础数据结构
1. String(字符串)

最基础的数据结构,存储简单的键值对。
支持操作:SET、GET、INCR、DECR、APPEND 等。
应用场景:缓存、计数器、简单的键值存储。
2. List(列表)

有序列表,支持双向链表操作。
支持操作:LPUSH、RPUSH、LPOP、RPOP、LRANGE 等。
应用场景:消息队列、任务队列。
3. Set(集合)

无序集合,支持去重。
支持操作:SADD、SREM、SMEMBERS、SUNION 等。
应用场景:标签管理、去重。
4. Hash(哈希表)

存储键值对的集合,类似于 Map。
支持操作:HSET、HGET、HDEL、HGETALL 等。
应用场景:用户信息存储、配置管理。
5. Sorted Set(有序集合,ZSet)

带分数的有序集合,支持排序。
支持操作:ZADD、ZRANGE、ZREM、ZCOUNT 等。
应用场景:排行榜、优先级队列。

高级数据结构
1. HyperLogLog

用于基数估算(统计集合中不重复元素的数量)。
支持操作:PFADD、PFCOUNT、PFMERGE。
应用场景:UV统计、去重统计。
2. Bitmaps

位数组,用于存储和操作二进制数据。
支持操作:SETBIT、GETBIT、BITCOUNT、BITOP。
应用场景:用户签到、状态存储。
3. GEO(地理位置)

存储地理位置信息(经纬度)并支持地理位置相关操作。
支持操作:GEOADD、GEODIST、GEORADIUS、GEORADIUSBYMEMBER。
应用场景:附近的人或店铺查询、地理位置距离计算。
4. Streams(消息队列)

Redis 5.0 引入的消息队列数据结构,支持生产者-消费者模型。
支持操作:XADD、XREAD、XGROUP、XACK。
应用场景:日志收集、实时数据处理、轻量级消息队列。
Redis 模块扩展的数据结构
Redis 的模块扩展提供了更多高级数据结构,以下是常见模块及其数据结构:

1. RedisJSON

用于存储和操作 JSON 数据。
支持操作:JSON.SET、JSON.GET、JSON.DEL、JSON.MGET。
应用场景:存储结构化数据、替代关系型数据库。
2. RedisGraph

图数据结构,支持存储和查询图数据。
支持操作:GRAPH.QUERY、GRAPH.PROFILE、GRAPH.DELETE。
应用场景:社交网络分析、推荐系统、路径优化。
3. RedisBloom

提供概率性数据结构,如布隆过滤器、计数最小堆、Cuckoo Filter 等。
支持操作:BF.ADD、BF.EXISTS、CF.ADD、TOPK.ADD。
应用场景:去重、热点数据统计、数据流分析。
4. TimeSeries(时间序列)

用于存储和查询时间序列数据。
支持操作:TS.CREATE、TS.ADD、TS.RANGE、TS.MRANGE。
应用场景:物联网数据存储、实时监控、金融数据分析。
5. RedisAI

用于运行机器学习模型(如 TensorFlow、PyTorch)。
支持操作:AI.MODELSET、AI.MODELRUN、AI.TENSORSET。
应用场景:机器学习推理、实时 AI 应用。
6. RedisSearch

提供全文搜索功能。
支持操作:FT.CREATE、FT.SEARCH、FT.AGGREGATE。
应用场景:搜索引擎、复杂查询。

Redis 最新版本的增强功能
1. 多线程 I/O

Redis 6.0 引入了多线程 I/O,提升了性能,尤其是在处理大量并发连接时。
2. ACL(访问控制列表)

Redis 6.0 引入了用户级别的权限控制,支持细粒度的访问控制。
3. 客户端缓存

Redis 6.0 引入了客户端缓存功能,允许客户端订阅键的变化。
4. 集群模式增强

Redis 7.x 增强了集群模式的性能和稳定性,支持更多的命令和功能。

数据结构与应用场景总结
数据结构 应用场景
String 缓存、计数器、简单键值存储
List 消息队列、任务队列
Set 标签管理、去重
Hash 用户信息存储、配置管理
Sorted Set 排行榜、优先级队列
HyperLogLog UV统计、去重统计
Bitmaps 用户签到、状态存储
GEO 地理位置查询、距离计算
Streams 消息队列、实时数据处理
RedisJSON JSON 数据存储与操作
RedisGraph 图数据存储与查询
RedisBloom 去重、热点统计
TimeSeries 时间序列数据存储与分析
RedisAI 机器学习推理、实时 AI 应用
RedisSearch 搜索引擎、复杂查询


===========================Redisson 数据结构总结============

Redisson 数据结构总结
1. 基础数据结构
1. RBucket(分布式对象)

用于存储单个键值对。
类似于 Redis 的 String 类型。
示例:RBucket<String> bucket = redissonClient.getBucket("myBucket");

2. RMap(分布式 Map)

类似于 Java 的 Map,支持键值对存储。
支持高级功能,如 TTL(过期时间)、监听器等。
示例:RMap<String, String> map = redissonClient.getMap("myMap");

3. RSet(分布式 Set)

类似于 Java 的 Set,支持无序集合存储。
示例:RSet<String> set = redissonClient.getSet("mySet");

4. RList(分布式 List)

类似于 Java 的 List,支持有序集合存储。
示例:RList<String> list = redissonClient.getList("myList");

5. RDeque(分布式双端队列)

类似于 Java 的 Deque,支持双端队列操作。
示例:RDeque<String> deque = redissonClient.getDeque("myDeque");

6. RQueue(分布式队列)

类似于 Java 的 Queue,支持先进先出(FIFO)操作。
示例:RQueue<String> queue = redissonClient.getQueue("myQueue");

7. RSortedSet(分布式有序集合)

类似于 Java 的 SortedSet,支持排序。
示例:RSortedSet<String> sortedSet = redissonClient.getSortedSet("mySortedSet");

2. 高级数据结构
1. RLock(分布式锁)

支持分布式锁功能,适用于多线程或分布式环境。
示例:RLock lock = redissonClient.getLock("myLock");

2. RReadWriteLock(分布式读写锁)

支持分布式读写锁功能。
示例:RReadWriteLock readWriteLock = redissonClient.getReadWriteLock("myReadWriteLock");

3. RSemaphore(分布式信号量)

支持分布式信号量功能。
示例:RSemaphore semaphore = redissonClient.getSemaphore("mySemaphore");

4. RCountDownLatch(分布式倒计时器)

类似于 Java 的 CountDownLatch,支持分布式环境。
示例:RCountDownLatch latch = redissonClient.getCountDownLatch("myLatch");

5. RAtomicLong(分布式原子计数器)

类似于 Java 的 AtomicLong,支持分布式环境。
示例:RAtomicLong atomicLong = redissonClient.getAtomicLong("myAtomicLong");

6. RBitSet(分布式位集合)

类似于 Java 的 BitSet,支持位操作。
示例:RBitSet bitSet = redissonClient.getBitSet("myBitSet");

7. RBloomFilter(分布式布隆过滤器)

用于高效地判断元素是否存在,适合大规模数据场景。
示例:RBloomFilter<String> bloomFilter = redissonClient.getBloomFilter("myBloomFilter");

3. 分布式集合扩展
1. RHyperLogLog(分布式 HyperLogLog)

用于基数估算(统计不重复元素的数量)。
示例:RHyperLogLog<String> hyperLogLog = redissonClient.getHyperLogLog("myHyperLogLog");

2. RGeo(分布式地理位置)

用于存储和操作地理位置信息。
示例:RGeo<String> geo = redissonClient.getGeo("myGeo");

4. 分布式消息队列
1. RTopic(分布式发布订阅)

支持发布订阅模式。
示例:RTopic topic = redissonClient.getTopic("myTopic");

2. RBlockingQueue(分布式阻塞队列)

支持阻塞队列功能。
示例:RBlockingQueue<String> blockingQueue = redissonClient.getBlockingQueue("myBlockingQueue");

3. RDelayedQueue(分布式延迟队列)

支持延迟队列功能。
示例:RDelayedQueue<String> delayedQueue = redissonClient.getDelayedQueue(queue);

5. 分布式缓存
1. RLocalCachedMap(本地缓存 Map)

支持本地缓存和 Redis 同步。
示例:RLocalCachedMap<String, String> localCachedMap = redissonClient.getLocalCachedMap("myLocalCachedMap");

2. RRateLimiter(分布式限流器)

用于实现分布式限流功能。
示例:RRateLimiter rateLimiter = redissonClient.getRateLimiter("myRateLimiter");

6. 分布式任务调度
1. RScheduledExecutorService(分布式任务调度)

支持分布式任务调度和执行。
示例:RScheduledExecutorService executor = redissonClient.getExecutorService("myExecutor");


Redisson 数据结构与应用场景总结
数据结构 功能说明 应用场景
RBucket 单键值存储 缓存、简单键值存储
RMap 分布式 Map 配置管理、键值存储
RSet 分布式 Set 标签管理、去重
RList 分布式 List 有序集合、任务队列
RLock 分布式锁 分布式环境下的锁机制
RSemaphore 分布式信号量 限流、资源控制
RCountDownLatch 分布式倒计时器 分布式任务协调
RBloomFilter 布隆过滤器 去重、热点数据统计
RHyperLogLog 基数估算 UV统计、去重统计
RGeo 地理位置存储与查询 附近的人、距离计算
RTopic 发布订阅 消息通知、事件驱动
RBlockingQueue 阻塞队列 消息队列、任务队列
RDelayedQueue 延迟队列 定时任务、延迟消息处理
RRateLimiter 限流器 分布式限流、接口保护
RScheduledExecutorService 分布式任务调度 定时任务、分布式任务执行

Redisson 的优势
1. 分布式支持:

提供了丰富的分布式数据结构,适合分布式系统开发。
2. 线程安全:

所有数据结构和工具都是线程安全的。
3. 高级功能:

支持分布式锁、信号量、限流器、延迟队列等高级功能。
4. 易用性:

API 设计简单,易于集成到 Spring Boot 项目中。
如果您需要具体的代码示例或进一步的帮助,请随时提问!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询