Springboot-Redis - 1.Redis简介

导读

名称 链接 作用 使用场景
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操作。

中文文档

  • Redis

概述

  • Redis是一个高级key/value存储。它类似于memcached,但数据集是不稳定(volatile)的,值可以是字符串,与memcached完全一样,也可以是列表、集合和有序集合。所有这些数据类型都可以通过原子操作来操作,如push/pop元素、添加/删除元素、执行服务器端的并集、交集、差集等等。Redis支持不同类型的排序能力。
  • Spring Data Redis为Spring应用程序提供了简单的配置和对Redis的访问。它为与存储(store)的互动提供了低级和高级的抽象,将用户从基础设施的关注中解放出来。

Redis的要求

  • Spring Redis需要Redis 2.6或以上版本,Spring Data Redis与 Lettuce 和 Jedis(两个流行的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 转换服务,用于将缓存键或值进行转换,默认带有默认的缓存键转换器

Redis 支持的功能 / 特性

支持的功能 / 特性 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 节点或哨兵模式
- 需要轻量级的客户端
- 需要实现分布式锁
- 需要使用高级数据结构和功能

你可能感兴趣的:(spring,boot,redis,spring)