1、设置过期时间
EXPIRE key seconds 其中 seconds 参数标识键的过期时间,单位是秒。返回1表示设置成功,返回0则表示键不存在或设置失败。
TTL key 查看一个键还有多久的时间会被删除。返回值是剩余的时间,单位是秒。当键不存在时该命令会返回 -2.
PEXPIRE key seconds 其中 seconds 参数标识键的过期时间,单位是毫秒。返回1表示设置成功,返回0则表示键不存在或设置失败。
PTTL key 查看一个键还有多久的时间会被删除。返回值是剩余的时间,单位是毫秒。当键不存在时该命令会返回 -2.
PERSIST key 取消键的过期时间,即将键恢复成永久的。过期时间被成功清楚则返回1,否则返回0(键不存在或键本来就是永久的)
127.0.0.1:6379> set session:101 uid1314
OK
127.0.0.1:6379> expire session:101 120
(integer) 1
127.0.0.1:6379> ttl session:101
(integer) 106
127.0.0.1:6379> ttl session:101
(integer) 93
127.0.0.1:6379> ttl session:101
(integer) -2
没有为键设置过期时间,既永久存在,这是建立一个键后的默认情况。TTL命令返回 -1。
在2.6版本中,无论键不存在还是键没有过期时间都会返回 -1,知道 2.8 版本后两种情况才会分别返回 -2 和 -1 两种结果。
2、实现缓存
当服务器内存有限时,如果大量地使用缓存键且过期时间设置的过长就会导致Redis占满内存;如果将缓存键的过期时间设置的过短,就可能导致缓存命中率过低并且大量内存白白地闲置。
很难为缓存键设置合理的过期时间,为此可以限制Redis能使用的最大内存,并让Redis按照一定的规则淘汰不需要的缓存键。
设置方法:修改配置文件的 maxmemory 参数,限制Redis最大可用内存大小(单位是字节),当超出这个限制时Redis会依据 maxmemory-policy 参数指定的策略来删除不需要的键直到Redis占用的内存小于指定的内存。
volatile-lru 使用LRU算法删除一个键(支队设置了过期时间的键)
allkeys-lru 使用LRU算法删除一个键
volatile-random 随机删除一个键(支队设置了过期时间的键)
allkeys-random 随即删除一个键
volatile-ttl 删除过期时间最近的一个键
noeviction 不删除键,只返回错误
LRU(Least Recently Used)算法即“最近最少使用”,其认为最近最少使用的键在未来一段时间内也不会被用到,即当需要空间是认为这些键是可以被删除的。
相关推荐
Redis缓存穿透、缓存击穿、缓存雪崩面试题解析 Redis缓存穿透、缓存击穿、缓存雪崩是Redis中的三个重要概念,它们都是Redis缓存机制中可能出现的错误或问题。下面我们将详细解析这三个概念,并提供相应的解决方案。...
两级缓存在redis的方案上做一步优化,在缓存到远程redis的同时,缓存一份到本地进程ehcache(此处的ehcache不用做集群,避免组播带来的开销),取缓存的时候会先取本地,没有会向redis请求,这样会减少应用服务器<–...
1. 缓存机制 – Redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。 2. 排行榜系统 – Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜...
仿redis缓存Java版轻量级缓存组件LocalCache,基于JVM内存实现数据缓存及过期机制
包含了redis的下载,以及php的redis扩展,自己确切使用可以
2. 多级缓存:采⽤多级缓存,本地进程作为一级缓存,Redis 作为二级缓存,不同级别的缓存设置的超时时间不同,即使某级缓存过期了,也有其他级别缓存兜底。 3. 缓存标记:记录缓存数据是否过期,如果过期会触发通知...
主要介绍了java操作Redis缓存设置过期时间的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
另外,详细阐述了缓存与数据库双写一致性问题及解决策略。最后,提供了Redis键值设计和性能优化的实用建议,如合理的key名设计、避免bigkey、选择合适的数据类型,以及客户端连接池使用优化。这些内容对于提升Redis...
1、添加依赖 pom.xml 2、主入口添加注解@EnableCaching 获取缓存方法添加@Cacheable 3、初始化缓存管理器 4 实现put get方法 其中一个put方法添加了过期时间 5 调用方法获取缓存 注意需要在本地部署redis服务注意...
springboot2.x版本的redis配置java类,修改redis缓存默认过期时间。
java使用DelayQueue延迟队列和Redis缓存实现订单自动取消功能
2. 永不过期:为每个 value 设置一个逻辑过期时间,当发现超过逻辑过期时间后,会使用单独的线程去构建缓存。 了解 Redis 缓存的三大问题及其解决方案,可以帮助开发者更好地使用 Redis 缓存,提高系统的性能和可用...
redis基本命令 Redis数据结构、原理分析、应用实战 什么是Redis Redis的作用 Redis的存储结构 Redis的安装 Redis的数据类型 字符串类型 列表类型 ...缓存与数据一致性问题 缓存雪崩与缓存穿透 布隆过滤器
1.springboot集成redis,并监听redis过期key做相应的业务处理
redis命令实践 Redis数据结构、原理分析、应用实战 什么是Redis Redis的作用 Redis的存储结构 Redis的安装 Redis的数据类型 字符串类型 列表类型 ...缓存与数据一致性问题 缓存雪崩与缓存穿透 布隆过滤器
另外也有一个更为简单粗暴的方法,如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。 二、缓存雪崩 缓存雪崩是指缓存中大...
springboot整合redis做mybatis的二级缓存,含有自定义key,自定义过期时间,自定义序列化方式
· 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。 · 如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。 · 设置热点数据永远不过期。 在使用 Redis 时,我们需要了解...
Redis 事务与过期时间详细介绍 一、Redis事务: Redis中支持事务,事务即为当我们...二、Redis过期时间: 实际开发中经常会遇到一些有时效性的数据,比如缓存,过一段时间就需要删除这些数据,Redis支持设置一个键的
一定要加上 @EnableCaching,如果你只想使用默认配置,可以把它打在启动类上,不写配置类,但是这样一般无法满足实际业务需求,因为有些设置是必要的,例如缓存的过期时间,cacheManager 方法配置了缓存过期时间,...