1.是否可以设置过期时间 timeout ttl

对于单个key设置过期时间 需要自定义CacheManager, 见3中的问题
spring boot 1版本可以重写RedisCacheManager#computeExpiration
spring boot 2版本方案 :[参考]https://cloud.tencent.com/developer/article/1497599

2. @Cacheable不生效?

返回null, 没有保存到redis, 再次查询时以为没走AOP aspect
(见3中的问题)
另外一种是方法内部调用,不会走aop

3. 是否可以保存null value

redis是不支持保存Null的, 但是spring-cache可以把null设置成byte 0, 反序列化时再判断如果为0就setnull

需要设置RedisCacheManager cacheNullValues = true, 见构造方法, 默认cacheNullValues =null是不支持保存null value的

null value的序列化工具也不能使用下图中的一个,可以使用GenericJackson2JsonRedisSerializer或者fastjson实现

StringRedisSerializer默认实现只能序列化String, 会有很多的classCastException (还不容易定位到底是哪出错了), 最好也自己实现
ExtStringRedisSerializer implements RedisSerializer<Object>

4. cacheable解释

cachenames生成key的前缀, key指定具体的缓存id(可以使用springEL表达式获取查询参数的field)

redis中的示例 : 中间有个冒号

多字段时 key写法

5. mybatis mapper接口上使用cacheable找不到参数??

https://blog.csdn.net/f641385712/article/details/95169002
解决方法:
1.使用#a0 #p0的方式, 是从0开始的,cacheable javadoc示例写的是p1,误导人
2.开启Java8的-parameters 编译参数

spring cache问题记录的更多相关文章

  1. Spring cache简单使用guava cache

    Spring cache简单使用 前言 spring有一套和各种缓存的集成方式.类似于sl4j,你可以选择log框架实现,也一样可以实现缓存实现,比如ehcache,guava cache. [TOC ...

  2. 注释驱动的 Spring cache 缓存介绍

    概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...

  3. [转]注释驱动的 Spring cache 缓存介绍

    原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ 概述 Spring 3.1 引入了激动人心的基于注释(an ...

  4. Spring Cache 介绍

    Spring Cache 缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 c ...

  5. 注释驱动的 Spring cache 缓存介绍--转载

    概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...

  6. Spring Cache扩展:注解失效时间+主动刷新缓存

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  7. Spring Cache简单介绍和使用

    Spring Cache 缓存是实际工作中非经常常使用的一种提高性能的方法, 我们会在很多场景下来使用缓存. 本文通过一个简单的样例进行展开,通过对照我们原来的自己定义缓存和 spring 的基于凝视 ...

  8. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  9. 【转载】Spring Cache介绍

    原文地址:http://www.cnblogs.com/rollenholt/p/4202631.html 缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个 ...

随机推荐

  1. (day 1)创建项目--3【创建应用】

    创建步骤 1.打开命令行,进入项目中manage.py的同级目录 2.在命令行输入 python manage.py startapp blog 3.添加应用名到settings.py的INSTALL ...

  2. 个人安装GO1.13.6版本指南手册之搭建环境

    因好奇而走进go语言,让你不在只闻其声,不见其形. https://golang.org/doc/install:这里是go语言的官网文档.吃不透英文,终究会被限制在有限的区域,一词词的吃透. 安装包 ...

  3. pycharm实用技巧

    https://mp.weixin.qq.com/s/-48vU9KtnInFaYJ6rQ9n-w

  4. UIWindow statusBar消失

    1.新建UIWindow 程序崩溃 报无根控制器错误 Xcode7环境下,新建UIWindow需添加rootViewController 2.新建UIWindow后 statusBar消失 Info. ...

  5. go多态

      package main import ( "fmt" ) type Intf interface { process() } type MsgBase struct { id ...

  6. Jmeter接口测试之案例实战

    Jmeter是apacheg公司基于Java开发的一款开源的压力测试工具,安装Jmeter之前先安装Jdk,具体JDK安装和环境变量配置自行百度.这里不概述. 1.添加线程组 测试计划->添加- ...

  7. yum无法安装nginx,报错内容为1:nginx-1.14.2-1.el7_4.ngx.x86_64: [Errno 5] [Errno 2] 没有那个文件或目录

    yum命令安装nginx时报错:1:nginx-1.14.2-1.el7_4.ngx.x86_64: [Errno 5] [Errno 2] 没有那个文件或目录 一.问题原因:Python版本的问题 ...

  8. Lambder笔记

    记录Lambda语法(λ ,匿名函数)以及三个Python常见内置函数 形如:y=f(x)=x*x 使用lambda语法将对一个变量的运算抽象出来,如同f(),或是数学中的函数.关系.映射 f = l ...

  9. 我是如何从Java转型为Go区块链工程师

    我是如何从Java转型为Go区块链工程师 本文来自于一个比原链核心开发的陈述 前言 IT部落在加入比原链之前一直是做Java开发的,当初看到Go还有点犹豫,还怕过不了面试,结果是否掌握一门语言的考量确 ...

  10. ZJNU 1205 - 侦探推理——高级

    双层枚举嫌疑犯与当日是星期几,统计真话与假话是否满足题意 注意 fake<=N&&fake+neutral>=N 即假话数量不大于N,假话加上没用的废话数量不小于N (注意 ...