[Spring][Redis]@Cacheable与redis整合时Value和Key的理解

2023-11-13

更新于2019年11/08:

首先, 多谢CHENFU_ZKK同学指出我的错误.

卧槽,吓我一跳,我还以为我以前学的搞错了。若不是我亲自测试一遍,差点信你了

这两天趁有空, 跟踪了@Cacheable相关的源码再次确认结果如下:

1)  直接使用Spring的@Cacheable注解, 则调用的redis的set函数, 那么生成的Key为value和name俩个字符串通过::进行连接. 如文章中的案例, 结果为testcache::#userName.

2) 之所以我的系统上测试结果是上面文章的结果, 是因为我的系统自定义了redis的相关函数.
 

--------------------------2019-07-31 00:08:27发表的原文-------------------------------------------------------------

关于@Cacheable, 网上很多解释, 具体参考下面FYI:

我这里主要记录一下我自己在整合@Cacheable与Redis的理解.

1) @Cacheable与redis整合时, 使用的是redis的hset数据类型.

   @Cacheable的语法:

@Cacheable(value=”testcache”,key=”#userName”)

    redis命令行客户端使用hset的语法是:

hset key field value

2)  @Cacheable的value参数实际上就是hset命令的key字段, 而@Cacheable的key参数是hset的field字段,

最后@Cacheable注解所在的函数返回值是hset命令的value字段.

----------------------------------------------------------------------------------------------------------

FYI:

如下摘自: https://blog.csdn.net/dreamhai/article/details/80642010:

 

@Cacheable可以标记在一个方法上,也可以标记在一个类上。当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表示该类所有的方法都是支持缓存的。对于一个支持缓存的方法,Spring会在其被调用后将其返回值缓存起来,以保证下次利用同样的参数来执行该方法时可以直接从缓存中获取结果,而不需要再次执行该方法。Spring在缓存方法的返回值时是以键值对进行缓存的,值就是方法的返回结果,至于键的话,Spring又支持两种策略,默认策略和自定义策略,这个稍后会进行说明。需要注意的是当一个支持缓存的方法在对象内部被调用时是不会触发缓存功能的。

@Cacheable可以指定三个属性,value、key和condition。

 

参数 解释 example
value 缓存的名称,在 spring 配置文件中定义,必须指定至少一个 例如:@Cacheable(value=”mycache”)
@Cacheable(value={”cache1”,”cache2”}
key 缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,
如果不指定,则缺省按照方法的所有参数进行组合
@Cacheable(value=”testcache”,key=”#userName”)
condition 缓存的条件,可以为空,使用 SpEL 编写,
返回 true 或者 false,只有为 true 才进行缓存
@Cacheable(value=”testcache”,condition=”#userName.length()>2”)

       

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Spring][Redis]@Cacheable与redis整合时Value和Key的理解 的相关文章

随机推荐

  • 数据可视化第四章答案

    热狗大赛大胃王前三 from pyecharts import Pie import pandas as pd hotplace pd read csv hot dog places csv header None hotplace pd
  • Spring框架中的Resource接口是什么,以及它在加载和访问资源时的关键作用

    文章目录 什么是 Resource 接口 使用 Resource 加载资源 使用 Resource 访问文件系统资源 总结 个人主页 程序员 小侯 CSDN新晋作者 欢迎 点赞 评论 收藏 收录专栏 Java框架 文章内容 Resource
  • 告别枯燥,247个Python经典实战案例集合(附代码)

    今天为大家推荐一个Python从入门到进阶的实战案例合集 共计247个案例 185页内容 从此告别枯燥 60秒学会 个 例 系统学习Python 从 门到 师 所有均含有实例代码 可直接运行 感受python之美 用最短的代码实现 02 P
  • 基于STM32单片机的智能家居毕设

    文章目录 一 硬件选型 1 硬件清单 2 硬件展示 部分 二 效果展示 1 整体效果展示 2 显示屏 触摸 效果展示 三 功能分析 1 系统总体结构框图 2 主要包含的功能 四 怎么做 1 STM32单片机部分 2 语音识别与播报部分 3
  • 【JeecgBoot】点击返回关闭当前页面(tab)且返回上一层

    首先要在你需要关闭得页面组件里面加上inject closeCurrent 如下图位置 之后写一个触发函数 这里面得reBack即是返回函数
  • HTMl中的各种标签(常见)

    HTML的元素以开始标签开始 结束标签结束 被它们包起来 且一半可以嵌套 分类 html的标签主要分为双标签和单标签 双标签
  • xmL 特殊符号转换

    一共有五个 所有的特殊字符对应的编码 特殊字符 代替符号 特殊原因 amp 每一个代表符号的开头字符 gt gt 标记的结束字符 lt lt 标记的开始字符 quot 设定属性值 apos 设定属性值 代替符号都以 开始 都包含分号 以分号
  • CUDA中动态Global Memory分配和操作

    CUDA中动态Global Memory分配和操作 CUDA中动态Global Memory分配和操作 1 Heap Memory Allocation 2 Interoperability with Host Memory API 3 E
  • vue中利用自定义指令修改elementUI对话框到顶部的距离

    Vue directive alterELDialogMarginTop 修改elementUI中el dialog顶部的距离 传入值eg marginTop 5vh inserted el binding vnode el firstEl
  • python基于机器学习的姓名预测性别网页app开发

    前言 做这个项目的起因是之前csdn给我推荐了一个问答 基于机器学习的姓名预测性别的手机app开发 我点进去发现已经有人回答了 链接点进去一看 好家伙 这不是查表算概率吗 和机器学习有半毛钱关系 而且我觉得用姓名预测性别挺扯淡的 去查了一下
  • ##顺序表 编码##

    ifndef LIST H define LIST H class List public List int size List 析构函数 void ClearList 清空线性表 bool ListEmpty 判断线性表是否为空 int
  • VXLAN 大二层网络构建实战

    1 VXLAN 大二层网络 1 VXLAN背景 传统vlan可划分1 4094个子网 如果租户数量超过4094 就需要使用vxlan了 vxlan支持1670万个隔离网络通信 可以满足众多不同租户设计自己的内部网络 租户申请的云服务器来自不
  • 简单实用的数据库文档生成器

    哈喽 大家好 我是指北君 大家有没有过这样的经历 在DeadLine即将来临之际 文档尚未完成 面对纷繁复杂的数据库中各种表 视图 关联 存储过程等 你都不知道如何清晰准确的描述他们 不得不一个个打开表 视图 存储过程等查看 甚至可能因为疏
  • springboot自定义kafka消费者KafkaListenerContainerFactory配置说明和实验

    1 说明 实验一下 在spring boot中自行创建kafkaConsumer实例 进行消费 根据配置的不同 得出相应的结果 此例中 我使用 kafkaListenerContainerFactory自行创建了kafkaListener实
  • WSL环境中Pycharm的python控制台中报错 ModuleNotFoundError: No module named ‘xxx‘(WSL+Pycharm环境搭建系列之四)

    WSL环境中Pycharm的python控制台中报错 ModuleNotFoundError No module named xxx 0 前言 1 问题现象 2 问题分析 3 解决办法 0 前言 经过前面几次的努力 我们基本上完成了环境中的
  • 《python数据分析与应用》第四章:pandas统计分析基础

    第四章 4 1 读写不同数据源的数据 4 1 1 读 写数据库数据 1 数据库数据读取 注意 数据库的用户名 一般都是root 和密码 自己设置的 都是要用自己的 地址默认的127 0 0 1 读取函数 你自己把文件存在哪了 和存储函数 你
  • 解密蓝牙mesh系列

    转载自 蓝牙技术联盟 蓝牙mesh网络基本概念 本周跟大家分享解密蓝牙mesh系列第四篇 点这里查看第一篇 第二篇和第三篇文章 同时也是蓝牙mesh网络基本概念的第二部分 借助蓝牙mesh 您将能够创建大型网络并支持成千上万的设备之间进行安
  • css的新玩法,语法与规则

    css的新玩法 语法与规则 important 语法 Selector sRule important 说明 提升指定样式规则的应用优先权 IE6及以下浏览器有个比较显式的支持问题存在 important并不覆盖掉在同一条样式的后面的规则
  • 将Javaweb项目部署到云服务器

    一 前言 由于业务需要 要搞一个文件上传下载服务器 代码当前已经在localhost上调试成功 现在需要把这个项目部署到云服务器上 选择的服务器是vultr的vps 系统是Ubuntu16 04 二 环境准备 1 jdk安装 常规安装即可
  • [Spring][Redis]@Cacheable与redis整合时Value和Key的理解

    更新于2019年11 08 首先 多谢CHENFU ZKK同学指出我的错误 卧槽 吓我一跳 我还以为我以前学的搞错了 若不是我亲自测试一遍 差点信你了 这两天趁有空 跟踪了 Cacheable相关的源码再次确认结果如下 1 直接使用Spri