我是靠谱客的博主 俭朴咖啡,最近开发中收集的这篇文章主要介绍Spring Boot集成Redis缓存之RedisTemplate的方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

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的方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部