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

【十次方】Springboot中使用Redis做缓存相关推荐

  1. SpringBoot集成Redis和配置Redis做缓存

    Redis介绍 Redis是一个开源的.高性能的.基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求,直观的存储结构使得通过程序交互十分简单. Redis数据库中所有 ...

  2. springboot整合redis做缓存

    之前的项目中,用到过redis,主要是使用redis做缓存,redis在web开发中使用的场景很多,其中缓存是其中一个很重要的使用场景,之所以用作缓存,得益于redis的读写数据,尤其是在读取数据的时 ...

  3. springboot整个缓存_SpringBoot中整合Redis(缓存篇)

    实际开发中缓存处理是必须的,不可能我们每次客户端去请求一次服务器,服务器每次都要去数据库中进行查找,为什么要使用缓存?说到底是为了提高系统的运行速度.将用户频繁访问的内容存放在离用户最近,访问速度最快 ...

  4. 9.redis 做缓存

    全网最新相关内容 标题-链接 发布日期 简介 来源 轻松理解redis做缓存的流程_小浩丶的博客-CSDN博客_redis ... 2022-4-5 22:59:03 1. 引言 缓存有啥用?降低对数 ...

  5. springboot中使用redis详解

    一.redis简介 redis是一款高性能key-value(键值对)内存型数据库,是非关系型数据库的一种,它采用单线程的架构方式,避免了多线程存在的锁处理造成的资源耗费,读取速度非常快,非常适合变化 ...

  6. 如果redis哨兵宕机了怎么办_Spring集成Redis做缓存,Redis宕机时Spring处理的问题

    采用的是Spring自带的缓存管理,使用Redis做缓存,在Spring中配置如下 @Configuration @EnableCaching public class CachingConfig { ...

  7. 使用redis做缓存,遇到Could not return the resource to the pool异常怎么办呐!

    使用redis做缓存,短短几天就遇到两次redis.clients.jedis.exceptions.JedisException: Could not return the resource to ...

  8. Docker中搭建redis分片集群,搭建redis哨兵结构,实现springboot中对redis分片集群、哨兵结构的访问,Redis缓存雪崩、缓存击穿处理(非关系型数据库技术课程 第十二周)

    文章目录 一.要求: 二.知识总结 缓存雪崩 解决方案 docker中redis分片集群搭建 配置好配置文件 redis-6380.conf redis-6381.conf redis-6382.co ...

  9. SpringBoot集成Shiro前后端分离使用redis做缓存

    文章目录 一 .shiro介绍 1.基础介绍 2.基本功能点 3.基本流程图 二. 常用的权限管理表关系 2.1. 表组成 2.2. 表结构 三.实战案例 3.1. 案例介绍 3.2. 依赖 3.3. ...

  10. springboot redis做缓存

    一.配置好redis,不做赘述,只需要连接成功就好,有复杂需求请自行搜索redis 缓存相关策略配置 二.springboot pom引入cache <!-- https://mvnreposi ...

最新文章

  1. c语言规定在一个源程序中main函数的位置是什么?
  2. 常系数线性递推的第n项及前n项和(转载)
  3. 信佑无盘主服务器密码,(信佑无盘帮助手册.doc
  4. python计算排队时间_Python(pdb)-排队执行命令
  5. Spring面试之不同版本AOP执行顺序详解
  6. tex中让公式和文字在一行_1行代码搞定LaTeX公式编写,这个4.6M的Python小插件,堪称论文必备神器...
  7. 开源该如何“扎根”中国?听听他们怎么说
  8. [转]ExtJs中使用中碰到的三个问题的解决方法
  9. [C++] 中的trivial destructor
  10. html的abbr标签,html中如何使用abbr标签
  11. mac 阿里云ecs配置php,在Mac OS下配置PHP开发环境
  12. Evaluating Student Writing
  13. 测试开发—码流、单码流、双码流、多码流
  14. 以太网的分层架构_工业以太网中层次拓扑结构对网络性能的影响
  15. 随机生成英文字母 php,PHP生成随机英文用户名
  16. 用函数计算两数之和和两数之积
  17. 吃鸡服务器显示错误代码103,安装错误代码103怎么回事?
  18. linux开发技术栈
  19. 配上新的pip源再来安装pytorch有如神助
  20. linux磁盘文件格式转换,使用Fstransform在Linux下无损转换文件系统格式

热门文章

  1. 计算机五个盘,电脑分盘分几个盘合适,您知道吗?
  2. 升级Windows 10 正式版过程记录与经验
  3. 《Python编程从入门到实践》———第一章
  4. 简单使用apipost和jmeter 测试接口
  5. Ipopt安装【Ubuntu18.04】XAVIER(ARM架构)
  6. 计算机图形学 之 中点画线算法
  7. 21天学通Java学习笔记-Day03
  8. vs 2015 密钥
  9. 麦子学院python百度云_麦子学院python
  10. Oracle P6培训系列:04创建EPS结构