一、pom.xml引入依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

二、修改application.yml ,在spring节点下添加配置

  redis:
host: 127.0.0.1

三、修改Service 引入RedisTemplate

  1、在 findById 方法中 添加Redis缓存

@Autowired
private RedisTemplate redisTemplate;
int i=1;
  /**
* 根据ID查询实体
* @param id
* @return
*/
public Article findById(String id) {
System.out.println("查询次数:"+i++);
//先从缓存中查询当前对象
Article article=(Article)redisTemplate.opsForValue().get("article_"+id);
//如果没有取到
if(article==null){
//从数据库中查询
article=articleDao.findById(id).get();
//存入到缓存中
redisTemplate.opsForValue().set("article_"+id,article);
}
return article;
}

  执行结果

查询次数:1
Hibernate: select article0_.id as id1_0_0_, article0_.channelid as channeli2_0_0_ from tb_article article0_ where article0_.id=?
查询次数:2
查询次数:3
查询次数:4

  2、在 update 和 deleteById 方法中 删除Redis缓存

    /**
* 修改
* @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);
}

  操作流程:先修改 update 再查询 findById ,

       再修改 deleteById ,在查询 findById ,

  执行结果:

查询次数:5
Hibernate: update tb_article set channelid=?, columnid=?, comment=?, content=?, createtime=?, image=?, ispublic=?, istop=?, state=?, thumbup=?, title=?, type=?, updatetime=?, url=?, userid=?, visits=? where id=?
查询次数:6
Hibernate: select article0_.id as id1_0_0_, article0_.channelid as channeli2_0_0_ from tb_article article0_ where article0_.id=?
查询次数:6
查询次数:7
查询次数:8
查询次数:9
查询次数:10
Hibernate: delete from tb_article where id=?
查询次数:11
Hibernate: select article0_.id as id1_0_0_, article0_.channelid as channeli2_0_0_ from tb_article article0_ where article0_.id=?

  3、设置 Redis 过期时间 10秒

  /**
* 根据ID查询实体
* @param id
* @return
*/
public Article findById(String id) {
System.out.println("查询次数:"+i++);
//先从缓存中查询当前对象
Article article=(Article)redisTemplate.opsForValue().get("article_"+id);
//如果没有取到
if(article==null){
//从数据库中查询
article=articleDao.findById(id).get();
//存入到缓存中
redisTemplate.opsForValue().set("article_"+id,article,10, TimeUnit.SECONDS);
}
return article;
}

  执行结果:

查询次数:1
Hibernate: select article0_.id as id1_0_0_, article0_.channelid as channeli2_0_0_ from tb_article article0_ where article0_.id=?
查询次数:2
查询次数:3
查询次数:4
查询次数:5
查询次数:6
Hibernate: select article0_.id as id1_0_0_, article0_.channelid as channeli2_0_0_ from tb_article article0_ where article0_.id=?
查询次数:7
查询次数:8
查询次数:9

前5次查询只有第一次访问了数据库,想个10秒后,

再次查询4次,只有第6次访问了数据库,后3次也没有访问数据库。

四、SpringDataRedis常用方法

redisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间
redisTemplate.opsForValue().get("test")//根据key获取缓存中的val
redisTemplate.boundValueOps("test").increment(-1);//val做-1操作
redisTemplate.boundValueOps("test").increment(1);//val +1
redisTemplate.getExpire("test")//根据key获取过期时间
redisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位
redisTemplate.delete("test");//根据key删除缓存
redisTemplate.hasKey("546545");//检查key是否存在,返回boolean值
redisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间
redisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合
redisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据
redisTemplate.opsForSet().members("red_123");//根据key获取set集合

最新文章

  1. sysobjects中字段的含义
  2. Linux下安装软件的一般步骤
  3. nginx多域名的配置方法
  4. -_-#【JS】HTML5 API
  5. SDP(13): Scala.Future - far from completion,绝不能用来做甩手掌柜
  6. python笔记五(条件判断/循环/break和continue)
  7. DC/OS安装
  8. Filebeat工作原理
  9. media 标签解释
  10. js自定制周期函数
  11. 【struts2】自定义登录检查拦截器
  12. MAC 10.10 开机登录无敌风火轮问题解决方式
  13. ZOJ2748 Free Kick 2017-04-18 20:40 40人阅读 评论(0) 收藏
  14. 【C#】权限修饰符
  15. C# 面向对象——多态
  16. 广药帅气外教~看妹纸如何HOLD住
  17. C++_代码重用1-总览
  18. Nuxt使用Vuex
  19. JZ2440专用dnw 支持xp、win7、win8和win10系统【转】
  20. MySql基础学习-总纲

热门文章

  1. C功能模块集锦
  2. Linux服务器安装系统之1-LSI阵列卡Raid10配置方法
  3. vi文本编辑器的使用
  4. PHP 图片合成、仿微信群头像
  5. GUI学习之十五——QAbstractSpinBox学习总结
  6. Sublime3 配置node.js 环境 The process &quot;node.exe&quot; not found
  7. js 动态时间
  8. oracle删除数据文件
  9. Codecombat 游戏攻略(计算机科学三)
  10. sift特征点检测和特征数据库的建立