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. dp--树形dp P1352 没有上司的舞会

    题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...

  2. mybatis-地区三表生成地区树

    package com.dhht.manager.vo.area; import lombok.Data; import java.io.Serializable;import java.util.L ...

  3. pywin32获得tkinter的Canvas窗口句柄,并在上面绘图

    上一篇博文获得主窗口句柄使用的是root.frame或者通过子控件调用master.frame方法,但是子控件本身没有frame方法.那么怎么获得子控件的句柄呢?试过了很多办法,想过把Canvas当作 ...

  4. 35. docker swarm dockerStack 部署 投票应用

    1. 编写 docker-compose.yml # docker-compose.yml version: "3" services: redis: image: redis:a ...

  5. 统计_statistics_不同的人_大样本_分析_统计方法_useful ?

    统计_statistics_不同的人_大样本_分析_

  6. Python笔记_第四篇_高阶编程_检测_2.对类进行单元检测

    1. 对类进行单元检测: 第一步:首先编写一个类: # 类名Person,person.py class Person(object): def __init__(self,name,age): se ...

  7. coures包下载和安装 可解决报错ImportError: No module named '_curses'

    http://blog.csdn.net/liyaoqing/article/details/54949253 coures curses 库 ( ncurses )提供了控制字符屏幕的独立于终端的方 ...

  8. 吴裕雄--天生自然 PYTHON3开发学习:字符串

    var1 = 'Hello World!' var2 = "Runoob" #!/usr/bin/python3 var1 = 'Hello World!' var2 = &quo ...

  9. 如何正确理解SQL关联子查询

    一.基本逻辑 对于外部查询返回的每一行数据,内部查询都要执行一次.在关联子查询中是信息流是双向的.外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录.然后,外部查询根据 ...

  10. OracleXE 11g user莫名过期

    参考大大的 环境sqlplus 1.sysdba登陆 SQL>conn sys as sysdba password 2.查看用户状态 SQL>select username,accoun ...