一、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集合

Spring Boot 之 Redis的更多相关文章

  1. 玩转spring boot——结合redis

    一.准备工作 下载redis的windows版zip包:https://github.com/MSOpenTech/redis/releases 运行redis-server.exe程序 出现黑色窗口 ...

  2. Spring Boot使用Redis进行消息的发布订阅

    今天来学习如何利用Spring Data对Redis的支持来实现消息的发布订阅机制.发布订阅是一种典型的异步通信模型,可以让消息的发布者和订阅者充分解耦.在我们的例子中,我们将使用StringRedi ...

  3. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  4. spring boot集成redis实现session共享

    1.pom文件依赖 <!--spring boot 与redis应用基本环境配置 --> <dependency> <groupId>org.springframe ...

  5. Spring Boot + Mybatis + Redis二级缓存开发指南

    Spring Boot + Mybatis + Redis二级缓存开发指南 背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一.Mybat ...

  6. spring boot 结合Redis 实现工具类

    自己整理了 spring boot 结合 Redis 的工具类引入依赖 <dependency> <groupId>org.springframework.boot</g ...

  7. (转)spring boot整合redis

    一篇写的更清晰的文章,包括redis序列化:http://makaidong.com/ncjava/330749_5285125.html 1.项目目录结构 2.引入所需jar包 <!-- Sp ...

  8. Spring Boot 结合 Redis 缓存

    Redis官网: 中:http://www.redis.cn/ 外:https://redis.io/ redis下载和安装 Redis官方并没有提供Redis的Windows版本,这里使用微软提供的 ...

  9. SpringBoot(三) :Spring boot 中 Redis 的使用

    前言: 这一篇讲的是Spring Boot中Redis的运用,之前没有在项目中用过Redis,所以没有太大的感觉,以后可能需要回头再来仔细看看. 原文出处: 纯洁的微笑 SpringBoot对常用的数 ...

  10. (35)Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 本文章牵涉到的技术点比较多:Spring Data JPA.Redis.Spring MVC,Spirng Cache,所以在看这篇文章的时候,需要对 ...

随机推荐

  1. 洛谷P1879 [USACO06NOV]玉米田Corn Fields (状态压缩DP)

    题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...

  2. UVa 10294(polya 翻转与旋转)

    Arif in Dhaka(First Love Part 2) Input: standard input Output: standard output Time Limit: 2 seconds ...

  3. 针对360浏览器读取不了cookie的问题

    今天学习cookie的时候发现在360和谷歌浏览器下设置cookie打开是空白的!经过一番搜索才知道在本地是访问不了cookie只能在服务器端进行访问,但是仍然可以在火狐下进行访问

  4. Python---面向对象---案例

    a = 5print(5/10)# 地板除(功能类似于数学模块当中floor()向下取整操作)print(5//10)print(a%10)b = 25print(b/10)print(b//10)p ...

  5. [洛谷P4436] HNOI/AHOI2018 游戏

    问题描述 一次小G和小H在玩寻宝游戏,有n个房间排成一列,编号为1,2,...,n,相邻的房间之间都有一道门.其中一部分门上锁(因此需要有对应的钥匙才能开门),其余的门都能直接打开.现在小G告诉了小H ...

  6. logstash+redis收集负载均衡模式下多台服务器的多个web日志

    一.logstash的简介 一般我们看日志来解决问题的时候要么 tail+grep 要么 把日志下载下来再搜索,可以应付不多的主机和应用不多的部署场景.但对于多机多应用部署就不合适了.这里的多机多应用 ...

  7. react native 之 在现有的iOS工程中集成react native

    在现有的iOS工程中集成react native, 或者说将react native引入到iOS 项目,是RN和iOS混合开发的必经之路 参考官网教程:https://reactnative.cn/d ...

  8. es之java删除文档操作

    删除文档操作 @Test public void deleteDocument(){ DeleteResponse response = client.prepareDelete("twit ...

  9. JavaScript公共库event-stream被植入恶意代码

    [安全预警]JavaScript公共库event-stream被植入恶意代码 2018年11月27日,阿里云云盾应急响应中心监测到JavaScript公共库event-stream被植入恶意代码,该恶 ...

  10. 大数据笔记(五)——HDFS的高级特性

    一.HDFS的回收站: recyclebin 1.HDFS的回收站默认是关闭的 2.启用回收站:去core-site.xml配置 路径:/root/training/hadoop-2.7.3/etc/ ...