Spring全家桶+分布式微服务(十次方项目学习)
十次方学习交流qq群:672373393
今天学习十次方项目,其中说到了如何在springboot框架中如何使用redis缓存,写篇博客记录一下。
为什么要用缓存?
在我们平时开发的项目中,其实是比较忌讳频繁的与数据库打交道的。所以我们需要用到缓存,来避开与数据库的多次交互。获取重复的数据我们只需要第一次查询数据,然后将数据存入redis缓存中,之后再次获取就直接通过缓存而避开与数据库交互。
如何使用
1.导入redis配置
我们需要在pom.xml文件中加入redis配置
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
然后在application.yml文件中配置redis连接地址

2.代码使用
接下来的使用就比较简单了,在service中添加RedisTemplate实例
@Autowiredprivate RedisTemplate redisTemplate;
这里我们优化一下findById根据id查询方法的效率
/*** 根据ID查询实体* @param id* @return*/public Article findById(String id) {//先从缓存中查询当前对象Article article = (Article) redisTemplate.opsForValue().get("article"+id);//如果没有if(article==null){//从数据库中取article = articleDao.findById(id).get();//存入缓存中redisTemplate.opsForValue().set("article"+id,article);}return article;}
但是需要注意一点,如果我们数据库中数据修改了,那边对应的缓存中的数据也需要修改,不然读取的将一直是第一次存入缓存中的数据。所以我们对应的需要对 修改 删除方法进行改动
/*** 修改* @param article*/public void update(Article article) {redisTemplate.delete("article"+article.getId());articleDao.save(article);}/*** 删除* @param id*/public void deleteById(String id) {redisTemplate.delete("article"+id);articleDao.deleteById(id);}
最后简单介绍一下RedisTemplate对象常用的几个方法:
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间
stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val
stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作
stringRedisTemplate.boundValueOps("test").increment(1);//val +1
stringRedisTemplate.getExpire("test")//根据key获取过期时间
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位
stringRedisTemplate.delete("test");//根据key删除缓存
stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值
stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合
stringRedisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合
















