不点蓝字,我们哪来故事?

前言

看到同事手动写的缓存代码,我实在是看不下去了,于是决定改造一下,最终达到自动Redis缓存,不用手动去set了。

使用场景

实时性要求不那么高的业务数据,我们可以在Service上进行一些缓存的操作。这样就可以减少访问数据库的频率。(脱离的场景的技术都是在纸上谈兵)

实战

1 话不多说,上代码自动化配置


源码

import java.time.Duration;

import org.springframework.cache.CacheManager;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.cache.RedisCacheConfiguration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.cache.RedisCacheWriter;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.RedisSerializationContext;import org.springframework.data.redis.serializer.RedisSerializer;@Configurationpublic class RedisConfig { /**  * SpringBoot配置redis作为默认缓存工具  * SpringBoot 2.0 以上版本的配置  */ @Bean    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {        //初始化一个RedisCacheWriter        RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);        //设置CacheManager的值序列化方式为json序列化        RedisSerializer jsonSerializer = new GenericJackson2JsonRedisSerializer();        RedisSerializationContext.SerializationPair pair = RedisSerializationContext.SerializationPair                                                    .fromSerializer(jsonSerializer);        RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig()                                                    .serializeValuesWith(pair)                                                    //设置默认超过期时间是30秒                                                    .entryTtl(Duration.ofSeconds(30));        //初始化RedisCacheManagerreturn new RedisCacheManager(redisCacheWriter, defaultCacheConfig);    }}

2 启用缓存注解


3 使用注解,实现curd

3.1 查询 使用 @Cacheable


3.2 增加或修改使用 @CachePut


3.3 删除用 @CacheEvict


文章来源 | https://www.toutiao.com/i6903746076747104772/

Hi

感谢你的到来

我不想错过你

编程那些烦心事

精彩推荐Go语言学习笔记系列Spring Cloud学习笔记系列JVM学习笔记系列喜欢就点个在看再走吧

go redis 序列化_求求你不要手写Redis缓存相关推荐

  1. 求求你不要手写redis 缓存set,get

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 作者:小 ...

  2. redis setnx 分布式锁_手写Redis分布式锁

    分布式锁使用场景 现在的系统都是集群部署,每个服务都不是单节点的了.比如库存服务,可能部署到3台机器上分别命名为节点1,节点2,节点3.库存服务需要扣减库存,扣减库存肯定需要锁吧,如果使用Lock或者 ...

  3. 手写redis@Cacheable注解 支持过期时间设置

    原理解释 友情链接  手写redis @ Cacheable注解参数java对象作为键值 @Cacheable注解作用,将带有该注解方法的返回值存放到redis的的中; 使用方法在方法上使用@Cach ...

  4. hashmap remove 没释放内存_java从零开始手写 redis(13)HashMap 源码原理详解

    为什么学习 HashMap 源码? 作为一名 java 开发,基本上最常用的数据结构就是 HashMap 和 List,jdk 的 HashMap 设计还是非常值得深入学习的. 无论是在面试还是工作中 ...

  5. node怎么把token放到redis_从零开始手写 redis(八)朴素 LRU 淘汰算法性能优化

    前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...

  6. 手写Redis服务端,从设计者的角度聊一聊Redis本身

    [文章来源]https://sourl.cn/mqFYeU 零,起因 我为什么要造redis这个轮子?1 破除对redis神秘感.2 "基础服务中台"的同事们在开会讨论redis云 ...

  7. 防抖 节流_每日一题手写函数防抖与节流

    关注"前端学苑" ,坚持每天进步一点点 「~函数防抖与节流 ~」 每日一题,希望让爱学习.思考的前端技术伙伴在一起学习.复盘.成长. 基础知识要夯实,原理源码要深入,深度广度要扩展 ...

  8. word饼图如何画引导线_网络授课如何手写、标注?

    经过一个星期的网络授课,望兵石学校各年级主任陆续组织教师召开网络教研视频会议,会上老师们畅所欲言,谈到了自己网络教学的典型做法.遇到的困惑.改进的措施等.无论是老教师,还是青年教师,基础操作没有什么问 ...

  9. python使用redis队列_【Python】python使用redis做队列服务

    系统中引入消息队列机制是对系统一个非常大的改善.例如一个web系统中,用户做了某项操作后需要发送邮件通知到用户邮箱中.你可以使用同步方式让用户等待邮件发送完成后反馈给用户,但是这样可能会因为网络的不确 ...

最新文章

  1. SRM 563 Div1 500 SpellCards
  2. 状态模式的介绍及状态机模型的函数库javascript-state-machine的用法和源码解析
  3. jmeter录制 过滤_Jmeter脚本录制
  4. MyBatis源码分析-IDEA新建MyBatis源码工程
  5. 基于 IdentityServer3 实现 OAuth 2.0 授权服务【密码模式(Resource Owner Password Credentials)】...
  6. 新华三社招流程_【面试经验|校招】新华三/产品经理
  7. spark学习-34-Spark的BroadcastManager广播管理器
  8. load control template file /_controltemplates/taxonomypicker.ascx failed
  9. 再谈new functionName
  10. 户外lisp导向牌如何安装_他山之石可攻玉,赴成都、重庆学习考察户外广告和门头牌匾规划管理工作...
  11. nodejs mysql 增删改查_#NodeJS# MySQL的介绍安装使用以及使用NodeJS链接MySQL实现增删改查...
  12. 全新的福昕JavaScript PDF阅读器
  13. 关于亚马逊metdata1的
  14. vue——评论的展开全文和收起
  15. vim + vundle + YCM+自动格式化
  16. hbase协处理器Coprocessor(简介)
  17. Excel插件《CC办公助手》
  18. 闭关宅家学点啥?第1弹:做个启动U盘吧
  19. HTTP常见的14种状态码
  20. 浅谈 Java中的静态内部类、匿名内部类、成员式内部类和局部内部类

热门文章

  1. 第二次作业+105032014149
  2. eclipse自动补全设置
  3. adbi学习:so hook实现机制
  4. javascript小技巧 JavaScript[对象.属性]集锦 [zz]
  5. linux 目录大小是12288,【系统知识点】linux目录结构(示例代码)
  6. Python之数据分析(Numpy中的除法和取余、三角函数、ufunc对象的位运算)
  7. 微课系列(8):Python中lambda表达式的变量作用域
  8. Python 3.x中内置函数range()函数的用法
  9. 华为交换机模拟器_从零开始学习华为路由交换 | 配置缺省静态路由
  10. python的基本语法if语句_Python基础之条件控制操作示例【if语句】