标准件网站开发,上海网站设计哪家好,星级酒店网站建设公司,淘宝客网站建设视频目录 前言1. 基本知识2. Java代码 前言 #x1f91f; 找工作#xff0c;来万码优才#xff1a;#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 单纯学习Redis可以看我前言的Java基本知识路线#xff01;#xff01;
对于Java的基本知识推荐阅读#xff1a;
java框架… 目录 前言1. 基本知识2. Java代码 前言 找工作来万码优才 #小程序://万码优才/r6rqmzDaXpYkJZF 单纯学习Redis可以看我前言的Java基本知识路线
对于Java的基本知识推荐阅读
java框架 零基础从入门到精通的学习路线 附开源项目面经等超全【Java项目】实战CRUD的功能整理持续更新
在Java项目中Redis配置了全局的TTL时间后续想到可以通过设定单个key的TTL时间 1. 基本知识
先补充TTL的基本知识
TTL 是 Redis 中用于表示键的剩余生存时间的一个命令Time To Live通过命令 TTL key 可以查看某个键的剩余有效时间
返回值的含义如下
正整数 表示键的剩余生存时间单位秒 例如 TTL key 返回 300表示该键还有 300 秒过期-1 表示键存在但没有设置过期时间也就是说该键是永久有效的-2 表示键不存在或者已经过期被删除 大致截图如下
对于永久有效的键需要手动删除Redis 不会自动处理 TTL 是以秒为单位的但可以通过 PTTL 命令获取毫秒级的剩余时间
2. Java代码
禁用单个 Redis 缓存键的实现
针对特定的缓存键如 drag:cache:page可以通过以下方式禁用 策略 为该键设置极短的 TTL使其在创建后立即过期
if (drag:cache:page.equals(name)) {if (cacheConfig ! null) {cacheConfig cacheConfig.entryTtl(Duration.ofMillis(1)); // 设置极短的过期时间}return super.createRedisCache(name, cacheConfig);
}截图如下 特别说明的是此情况会失效 Duration.ZERO 失败TTL 为 -1 在 Spring 的 RedisCacheConfiguration 中Duration.ZERO 被解释为“永久有效”导致 Redis 未对该键设置 TTL因此返回 -1
~ Duration.ofMillis(1) 成功 当 TTL 被设置为极短时间如 1 毫秒Redis 会将该键立即标记为即将过期。客户端在短时间后访问该键时Redis 会将其删除因此相当于“禁用”了该键
总的来说 Duration.ZERO 通常被认为是不需要过期时间的值在大多数框架中会导致缓存项被设置为永久有效 使用非常短的 TTL如 Duration.ofMillis(1)是一种有效实现“禁用”的方法
上述代码是结合实战进行推广
以下是Demo思路 设置极短 TTL 推荐方式通过设置 Duration.ofMillis(1) 实现禁用 优点是直接在 Redis 中生效且无需额外逻辑 手动删除键缺点是需要额外的删除操作增加复杂度 使用 RedisTemplate 明确删除
RedisTemplateString, Object redisTemplate // 获取 RedisTemplate 实例
redisTemplate.delete(drag:cache:page);返回空缓存实现 如果不希望在 Redis 中存储该键可以直接返回一个空的 RedisCache 实现
if (drag:cache:page.equals(name)) {return new RedisCache(name, null, cacheConfig); // 返回空实现
}