名称 | 链接 | 作用 | 使用场景 |
---|---|---|---|
Springboot-Redis - 1.Redis简介 | 链接 | Redis是一个开源的内存数据结构服务器,用作数据库、缓存和消息代理。 | 用于缓存、消息队列、实时分析、地理空间、聊天/消息、媒体流、发布/订阅等场景。 |
Springboot-Redis - 2.Redis分层抽象 | 链接 | 描述了Redis的内部结构和数据组织方式。 | 用于理解Redis的内部工作原理和数据存储方式。 |
Springboot-Redis - 3.Redis连接方式 | 链接 | 描述了如何连接到Redis服务器的不同方法。 | 根据应用的需求选择合适的连接方式。 |
Springboot-Redis - 4.Redis的线程安全问题 | 链接 | 描述了Redis的线程模型和如何处理并发问题。 | 在高并发环境下确保Redis操作的线程安全。 |
Springboot-Redis - 5.通过 RedisTemplate 处理对象 | 链接 | 使用RedisTemplate在Java中操作Redis。 | Java应用中操作Redis数据。 |
Springboot-Redis - 6.Redis Sentinel (哨兵)的支持 | 链接 | 描述了Redis Sentinel的工作原理和如何配置。 | 用于监控Redis主从服务器,实现自动故障转移。 |
Springboot-Redis - 7.Redis 集群 | 链接 | 描述了Redis集群的工作原理和如何配置。 | 用于提高Redis的可用性和分区容错性。 |
Springboot-Redis - 8.Redis 序列化和反序列化 | 链接 | 描述了如何在Redis中存储和检索复杂的数据结构。 | 用于将复杂的数据结构存储到Redis中。 |
Springboot-Redis - 9.Redis 的 Hash 映射 | 链接 | 描述了Redis的哈希数据类型和如何使用它。 | 存储和检索键值对集合。 |
Springboot-Redis - 10.Redis 消息 (Pub/Sub) | 链接 | 描述了Redis的发布/订阅消息系统。 | 实现消息的发布和订阅功能。 |
Springboot-Redis - 11.Redis 事务 | 链接 | 描述了如何在Redis中使用事务。 | 保证一系列命令的原子性执行。 |
Springboot-Redis - 12.Redis Pipelining(管道) | 链接 | 描述了如何使用Redis管道来优化性能。 | 批量执行命令以减少网络延迟。 |
Springboot-Redis - 13.Lua 脚本执行 | 链接 | 描述了如何在Redis中执行Lua脚本。 | 原子性地执行复杂的操作。 |
Springboot-Redis - 14.响应式的 Redis 支持 | 链接 | 描述了如何在Java中使用响应式编程与Redis交互。 | 在Java应用中实现响应式Redis操作。 |
RedisCacheManager 默认配置:
设置 | 值 | 描述 |
---|---|---|
Cache Writer | 无锁,KEYS 批处理策略 | 缓存写入策略,默认使用无锁方式,可能切换到 SCAN 策略 |
Cache Configuration | RedisCacheConfiguration#defaultConfiguration | 缓存配置,默认配置 RedisCacheConfiguration#defaultConfiguration |
Initial Caches | None | 初始缓存,默认情况下没有定义初始缓存 |
Transaction Aware | No | 是否事务感知,默认不支持事务感知 |
RedisCacheConfiguration 默认配置:
设置 | 值 | 描述 |
---|---|---|
Key Expiration | None | 缓存键过期时间,默认情况下不设置过期时间 |
Cache null | Yes | 是否缓存空值,默认情况下会缓存空值 |
Prefix Keys | Yes | 是否对缓存键添加前缀,默认情况下会添加前缀 |
Default Prefix | The actual cache name | 默认的缓存键前缀,默认使用实际的缓存名称作为前缀 |
Key Serializer | StringRedisSerializer | 缓存键的序列化器,默认使用 StringRedisSerializer |
Value Serializer | JdkSerializationRedisSerializer | 缓存值的序列化器,默认使用 JdkSerializationRedisSerializer |
Conversion Service | 带有默认 cache key converter 的 DefaultFormattingConversionService | 转换服务,用于将缓存键或值进行转换,默认带有默认的缓存键转换器 |
支持的功能 / 特性 | Lettuce | Jedis | Redisson |
---|---|---|---|
单机连接 | 支持 | 支持 | 支持 |
主/从 连接 | 支持 | 支持 | |
Redis 哨兵模式 | 主服务器查找, 哨兵验证, 读取副本 | 主服务器查找 | 主服务器查找, 哨兵验证, 读取副本 |
Redis 集群 | 集群连接, 集群节点连接, 读取副本 | 集群连接, 集群节点连接 | 集群连接, 集群节点连接, 读取副本 |
传输通道 | TCP, 操作系统原生TCP (epoll, kqueue), Unix 域套接字 | TCP | TCP, Unix 域套接字 |
连接池 | 支持 (使用 commons-pool2) | 支持 (使用 commons-pool2) | 支持 (内置) |
其他连接特性 | 单连接共享用于非阻塞命令 | 管道和事务是互斥的。在管道/事务中不能使用服务器/连接命令。 | 分布式锁, 语义发布/订阅等高级特性 |
SSL 支持 | 支持 | 支持 | 支持 |
发布/订阅 | 支持 | 支持 | 支持 |
管道 | 支持 | 支持 (管道和事务是互斥的) | 支持 |
事务 | 支持 | 支持 (管道和事务是互斥的) | 支持 |
数据类型支持 | 键, 字符串, 列表, 集合, 有序集, 哈希, 服务器, 流, 脚本, 地理, HyperLogLog | 键, 字符串, 列表, 集合, 有序集, 哈希, 服务器, 脚本, 地理, HyperLogLog | 键, 字符串, 列表, 集合, 有序集, 哈希, 服务器, 脚本, 地理, HyperLogLog, 多种高级数据结构 |
响应式 (非阻塞) API | 支持 | 支持 | |
优点 | - 线程安全 - 支持自动重连 - 丰富的数据结构 |
- 简单且直接 - 性能高 |
- 丰富的 API 和数据结构 - 高度可配置 - 内置连接池 |
缺点 | - 由于其复杂的内部结构, 可能稍慢 | - 非线程安全 - 可能不支持所有高级功能 |
- 较为重量级 |
区别 | - 提供响应式编程支持 - 默认客户端 |
- 为底层的客户端 - 不支持响应式编程 |
- 提供了许多高级特性,如分布式锁 - 基于Netty实现 |
使用场景 | - 需要线程安全 - 与 Redis 集群交互 |
- 单一 Redis 节点或哨兵模式 - 需要轻量级的客户端 |
- 需要实现分布式锁 - 需要使用高级数据结构和功能 |