概述
前言
Spring Boot 集成Redis,将自动配置 RedisTemplate,在需要使用的类中注入RedisTemplate的bean即可使用
@Autowired
private
RedisTemplate<String,
String>
redisTemplate;
@Autowired
private
RedisTemplate<Object,
Object>
redisTemplate;
注意: spring boot 帮我们注入的 redisTemplate 类,泛型里面只能写以上两种
1、在 pom.xml 中配置相关的 jar 依赖
<!--
加载spring boot redis 包
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、application.properties 中配置Redis连接信息
#配置redis
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=192.168.150.131
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=5000
配置了上面的步骤,Spring Boot 将自动配置 RedisTemplate,在需要使用的类中注入RedisTemplate的bean即可使用了。
3、测试RedisTemplate是否已经集成
下面我们来测试一下String字符串类型,看看我们是否已经集成了Redis
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
//插入一个字符串:opsForValue(); 操作字符串
@Test
public void testRedisOne(){
//1、更改序列化方式(方便查看Redis中存入的数据)
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
//2、向Redis中添加String类型数据类型
redisTemplate.opsForValue().set("name","IT");
//3、输出结果
Object name = redisTemplate.opsForValue().get("name");
System.out.println("结果为:"+name);
}
//插入多个字符串:opsForValue(); 操作字符串
@Test
public void testRedisTwo(){
//1、更改序列化方式(方便查看Redis中存入的数据)
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
//2、向Redis中添加String类型数据
Map<String,String> maps = new HashMap<>();
maps.put("name1","IT1");
maps.put("name2","IT2");
maps.put("name3","IT3");
redisTemplate.opsForValue().multiSet(maps);
//3、输出结果
List<String> keys = new ArrayList<>();
keys.add("name1");
keys.add("name2");
keys.add("name3");
List multiGet = redisTemplate.opsForValue().multiGet(keys);
System.out.println("结果为:"+multiGet);
}
}
结果为:[IT1, IT2, IT3]
4、创建实体类、必须序列化
@Data
public class User implements Serializable {
private Integer id;
private String name;
}
5、业务层实现类代码(查询一个List集合操作)
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserDao userDao;
//注入spring boot 自动配置好的RedisTemplate
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
@Override
public List<User> findAll() {
//1、设置key字符串的序列化器
RedisSerializer redisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(redisSerializer);
//2、查询Redis缓存
List<User> userList = (List<User>) redisTemplate.opsForValue().get("allUsers");
if(null == userList){
System.out.println("查询数据库.......");
//缓存为空,查询一遍数据库
userList = userDao.findAll();
//把查询出来的数据放入Redis中
redisTemplate.opsForValue().set("allUsers",userList);
}else{
System.out.println("查询Redis中的缓存.......");
}
return userList;
}
}
补充说明
如果使用RedisTemplate需要更改序列化方式
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
template.setKeySerializer(stringSerializer );
template.setValueSerializer(stringSerializer );
template.setHashKeySerializer(stringSerializer );
template.setHashValueSerializer(stringSerializer );
客户端常用操作:
查看所有key值:keys *
删除指定索引的值:del key
清空整个 Redis 服务器的数据:flushall
清空当前库中的所有 key:flushdb
最后
以上就是俭朴咖啡为你收集整理的Spring Boot集成Redis缓存之RedisTemplate的方式的全部内容,希望文章能够帮你解决Spring Boot集成Redis缓存之RedisTemplate的方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复