go redis 序列化_求求你不要手写Redis缓存
不点蓝字,我们哪来故事?
前言
看到同事手动写的缓存代码,我实在是看不下去了,于是决定改造一下,最终达到自动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缓存相关推荐
- 求求你不要手写redis 缓存set,get
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 作者:小 ...
- redis setnx 分布式锁_手写Redis分布式锁
分布式锁使用场景 现在的系统都是集群部署,每个服务都不是单节点的了.比如库存服务,可能部署到3台机器上分别命名为节点1,节点2,节点3.库存服务需要扣减库存,扣减库存肯定需要锁吧,如果使用Lock或者 ...
- 手写redis@Cacheable注解 支持过期时间设置
原理解释 友情链接 手写redis @ Cacheable注解参数java对象作为键值 @Cacheable注解作用,将带有该注解方法的返回值存放到redis的的中; 使用方法在方法上使用@Cach ...
- hashmap remove 没释放内存_java从零开始手写 redis(13)HashMap 源码原理详解
为什么学习 HashMap 源码? 作为一名 java 开发,基本上最常用的数据结构就是 HashMap 和 List,jdk 的 HashMap 设计还是非常值得深入学习的. 无论是在面试还是工作中 ...
- node怎么把token放到redis_从零开始手写 redis(八)朴素 LRU 淘汰算法性能优化
前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...
- 手写Redis服务端,从设计者的角度聊一聊Redis本身
[文章来源]https://sourl.cn/mqFYeU 零,起因 我为什么要造redis这个轮子?1 破除对redis神秘感.2 "基础服务中台"的同事们在开会讨论redis云 ...
- 防抖 节流_每日一题手写函数防抖与节流
关注"前端学苑" ,坚持每天进步一点点 「~函数防抖与节流 ~」 每日一题,希望让爱学习.思考的前端技术伙伴在一起学习.复盘.成长. 基础知识要夯实,原理源码要深入,深度广度要扩展 ...
- word饼图如何画引导线_网络授课如何手写、标注?
经过一个星期的网络授课,望兵石学校各年级主任陆续组织教师召开网络教研视频会议,会上老师们畅所欲言,谈到了自己网络教学的典型做法.遇到的困惑.改进的措施等.无论是老教师,还是青年教师,基础操作没有什么问 ...
- python使用redis队列_【Python】python使用redis做队列服务
系统中引入消息队列机制是对系统一个非常大的改善.例如一个web系统中,用户做了某项操作后需要发送邮件通知到用户邮箱中.你可以使用同步方式让用户等待邮件发送完成后反馈给用户,但是这样可能会因为网络的不确 ...
最新文章
- SRM 563 Div1 500 SpellCards
- 状态模式的介绍及状态机模型的函数库javascript-state-machine的用法和源码解析
- jmeter录制 过滤_Jmeter脚本录制
- MyBatis源码分析-IDEA新建MyBatis源码工程
- 基于 IdentityServer3 实现 OAuth 2.0 授权服务【密码模式(Resource Owner Password Credentials)】...
- 新华三社招流程_【面试经验|校招】新华三/产品经理
- spark学习-34-Spark的BroadcastManager广播管理器
- load control template file /_controltemplates/taxonomypicker.ascx failed
- 再谈new functionName
- 户外lisp导向牌如何安装_他山之石可攻玉,赴成都、重庆学习考察户外广告和门头牌匾规划管理工作...
- nodejs mysql 增删改查_#NodeJS# MySQL的介绍安装使用以及使用NodeJS链接MySQL实现增删改查...
- 全新的福昕JavaScript PDF阅读器
- 关于亚马逊metdata1的
- vue——评论的展开全文和收起
- vim + vundle + YCM+自动格式化
- hbase协处理器Coprocessor(简介)
- Excel插件《CC办公助手》
- 闭关宅家学点啥?第1弹:做个启动U盘吧
- HTTP常见的14种状态码
- 浅谈 Java中的静态内部类、匿名内部类、成员式内部类和局部内部类
热门文章
- 第二次作业+105032014149
- eclipse自动补全设置
- adbi学习:so hook实现机制
- javascript小技巧 JavaScript[对象.属性]集锦 [zz]
- linux 目录大小是12288,【系统知识点】linux目录结构(示例代码)
- Python之数据分析(Numpy中的除法和取余、三角函数、ufunc对象的位运算)
- 微课系列(8):Python中lambda表达式的变量作用域
- Python 3.x中内置函数range()函数的用法
- 华为交换机模拟器_从零开始学习华为路由交换 | 配置缺省静态路由
- python的基本语法if语句_Python基础之条件控制操作示例【if语句】