一、Spring data redis介绍
1.什么是spring data?
Spring Data是一个用于简化数据库访问的开源框架。其主要目标是使得对数据的访问变得方便快捷,包含多个子项目:
Spring Data JDBC- 对JDBC的Spring Data存储库支持。
Spring Data JPA - 对JPA的Spring Data存储库支持。
Spring Data MongoDB - 对MongoDB的基于Spring对象文档的存储库支持。
Spring Data Redis - 从Spring应用程序轻松配置和访问Redis。
...........
2.什么是Spring data redis?
Spring data redis时Spring data下的一个子模块,作用:简化redis操作
spring-data-redis针对jedis提供了如下功能:
(1)提供了一个高度封装的“RedisTemplate”类,里面封装了对于Redis的五种数据结构的各种操 作,包括:
- redisTemplate.opsForValue():操作字符串
- redisTemplate.opsForHash():操作hash
- redisTemplate.opsForList():操作list
- redisTemplate.opsForSet():操作set
- redisTemplate.opsForZSet():操作zset
(2)SpringBoot2.x后RedisTemplate采用是lettuce(基于netty采用异步非阻塞式lO)进行通信,大 并发下比jedis效率更高。
(3)RedisTemplate模板使用序列化器操作redis数据,预定义的序列化方案有:
序列化器 | 说明 |
---|---|
JdkSerializationRedisSerializer | POJO对象的存取场景,使用JDK本身序列化机制,将pojo类通过ObjectInputstream/ObjectOutputstream进行序列化操作,最终redis-server中将存储字节序列。是目前最常用的序列化策略。 |
stringRedisSerializer | Key或者value为字符串的场景,根据指定的charset对数据的字节序列编码成string,是"new String(bytes,charset)"和“string.getBytes(charset)"的直接封装。是最轻量级和高效的策略。 |
GenericJackson2JsonRedisSerializer | jackson-json工具提供了javabean与json之间的转换能力,可以将pojo实例序列化成json格式存储在redis中,也可以将json格式的数据转换成pojo实例。 |
3.为什么用RedisTemplate而不用jedis?
springboot2.x后RedisTemplate默认底层时lettuce,大并发下luttuce(netty)效率更高
RedisTemplate可以设置通用序列化器
4.spring data redis的启动器
spring-boot-starter-data-redis
二、Spring Data Redis入门
1、pom.xml
spring-boot-starter-data-redis
spring-boot-starter-web
spring-boot-starter-test
2、application.yml
spring:
redis:
cluster:
nodes:
- 192.168.113.134:7001
- 192.168.113.134:7002
- 192.168.113.134:7003
- 192.168.113.134:7004
- 192.168.113.134:7005
- 192.168.113.134:7006
jedis:
pool:
max-active: 20 #连接池最大连接数
max-idle: 10 #连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接
3.com.powershop.config
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
//设置通用序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setConnectionFactory(factory);
return redisTemplate;
}