在 Spring 中整合 Redis
jedis : 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用 jedis pool 连接池
lettuce : 采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据了
加入 Redis 相关依赖
org.springframework.boot
spring-boot-starter-data-redis
在 application.properties 中加入 Redis 相关配置
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=192.168.0.24
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=200
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=10
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=1000
两者数据 各自存、各自取,数据互不相通
序列化策略不同
RedisTemplate采用JDK的序列化策略(JdkSerializationRedisSerializer)保存的key和value 都是是采用此策略序列化保存的
StringRedisTemplate采用String的序列化策略(StringRedisSerializer)保存的key和
value都是String类型,存储和读取,都为可读的数据,采用此策略序列化保存的当存入对象时,会报错:can not cast into String
两者的关系是 StringRedisTemplate 继承 RedisTemplate
使用场景
五大数据类型
改变序列化策略
默认序列化方式存储到redis的数据人工不可读
不同策略序列化的过程有性能高低的
spring-data-redis 提供如下几种序列化策略
GenericToStringSerializer: //可以将任何对象泛化为字符串并序列化
Jackson2JsonRedisSerializer: //跟JacksonJsonRedisSerializer实际上是一样的
JacksonJsonRedisSerializer: //序列化object对象为json字符串
JdkSerializationRedisSerializer: //序列化java对象
StringRedisSerializer: //简单的字符串序列化