Redis等Spring Cache 框架 实现基于注解的缓存功能

Spring Cache 框架 实现基于注解的缓存功能

底层

基于代理技术 一旦进入方法就进入代理对象 如果redis里有就直接返回 不会走方法

如果缓存没有数据 则通过反射走方法。

概念

缓存 相当于之前的事务处理 同步更改

只是提供了一层抽象 底层可以切换不同的缓存实现

EHCache

Caffeine

Redis

灵活 可以随时换缓存实现 只要导入相应的jar包就行 代码不用做任何修改

如果使用Spring Cache缓存数据,key的生成:userCache::key 。key:value的key就是这个,value是返回结果

1 导入maven坐标

2 常用注解

用法

@CachePut(cacheNames="userCache",key="#user,id")

如果使用Spring Cache缓存数据,key的生成:userCache::key 。key:value的key就是这个,value是返回结果

注意这里展示的是树形结构 完整的key就是(userCache::key)一整段完整的数据 但 会根据冒号展示成树形结构

比如 a:b:c:d 会展示a包下b包下c包下 有个a:b:c:d

cacheNames可以随便写,取跟功能有关的 #跟表.id 可以动态生成可以动态生成key值

#result 对象导航 代表方法的返回值 就是return后面的东西。而user是从传递的参数取到的

#p0 #a0 表示第一个参数 #p1#a01表示第二个参数

#root.args[0]跟上面一样

Cacheable

一般用于查找 这个没有result用法 看源码有没有不用死记

CacheEVict

删除数据库同时清理缓存数据,但只会清理一条

如果想清理所有 不适用key 只算出来唯一的之 要全部清理使用allEntries=true

CachePut

插入数据库同时增加到缓存数据

实现步骤

1

2

3 用户查询缓存

管理员修改时 精确清理

清理所有

相关推荐
REDcker12 分钟前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
ACP广源盛1392462567331 分钟前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
Elastic 中国社区官方博客37 分钟前
ES|QL METRICS_INFO 和 TS_INFO:为你的时间序列数据建立目录
大数据·数据库·elasticsearch·搜索引擎·信息可视化·全文检索
俺不要写代码1 小时前
数据库:函数
数据库·mysql
2401_882273721 小时前
如何在 CSS 中正确加载本地 JPG 背景图片
jvm·数据库·python
极客先躯1 小时前
高级java每日一道面试题-2025年11月24日-容器与虚拟化题[Dockerj]-runc 的作用是什么?
java·oci 的命令行工具·最小可用·无守护进程·完全标准·创建容器的核心流程·runc 核心职责思维导图
用户60648767188962 小时前
AI 抢不走的技能:用 Claude API 构建自动化工作流实战
java
曹牧2 小时前
SQL:多个事务同时修改同一索引块
数据库·sql
我命由我123452 小时前
Kotlin 开发 - lateinit 关键字
android·java·开发语言·kotlin·android studio·android-studio·android runtime
aXin_ya2 小时前
微服务第八天 Sentinel 四种分布式事务模式
java·数据库·微服务