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的同时,缓存一份到本地进程ehcache(此处的ehcache不用做集群,避免组播带来的开销),取缓存的时候会先取本地,没有会向redis请求,这样会减少应用服务器<–...
仿redis缓存Java版轻量级缓存组件LocalCache,基于JVM内存实现数据缓存及过期机制
包含了redis的下载,以及php的redis扩展,自己确切使用可以
主要介绍了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缓存实现订单自动取消功能
1.springboot集成redis,并监听redis过期key做相应的业务处理
springboot整合redis做mybatis的二级缓存,含有自定义key,自定义过期时间,自定义序列化方式
Redis 事务与过期时间详细介绍 一、Redis事务: Redis中支持事务,事务即为当我们...二、Redis过期时间: 实际开发中经常会遇到一些有时效性的数据,比如缓存,过一段时间就需要删除这些数据,Redis支持设置一个键的
8.缓存与数据库不一致怎么办 9.主从数据库不一致如何解决 10.Redis 常见的性能问题和解决方案 11.Redis 的数据淘汰策略有哪些 12.Redis 当中有哪些数据结构 13.假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是...
1、采用session方式将验证码放入seeeion中并设置过期时间,用户注册登录发送验证码,然后合适对比; 2、采用数据库存储方式,每次将验证码和用户手机号绑定,然后直接查询数据库比对验证码; 3、采用redis方式将手机...
1)volatile-lru:使用LRU算法移除key,只对设置了过期时间的键(2)allkeys-lru:使用LRU算法移除key(3)volatile-ra
28、Redis key 的过期时间和永久有效分别怎么设置? 29、Redis 如何做内存优化? 30、Redis 回收进程如何工作的? 31、Redis 回收使用的是什么算法? 32、Redis 如何做大量数据插入? 33、为什么要做 Redis 分区? ...
缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力 解决方案:1.互斥锁 如果项目...
根据key 获取过期时间,返回0代表为永久有效 判断key是否存在 删除缓存,可以传一个值 或多个 普通缓存获取 普通缓存放入 普通缓存放入并设置时间,time要大于0 如果time小于等于0 将设置无限期 递增,传参指定要...
springboot 整合 redis 简单示例 1、添加依赖 pom.xml 2、主入口添加注解@EnableCaching 获取缓存方法添加@Cacheable 3、初始化缓存管理器 4 实现put get方法 其中一个put方法添加了过期时间 5 调用方法获取缓存。...
缓存击穿是指缓存中的一个热点Key(比如一个秒杀商品),在某个时间点过期的时候,恰好在这个时间点访问量剧增,对这个Key有大量的并发请求过来,请求发现缓存过期一般都会从后端DB加载数据并回设回缓存,但就在缓存中...
Redis性能极高能支持超过100K+每秒的读写频率,还支持通知key过期等等特性,所以及其适合做缓存。 下载安装 根据redis中文网使用wget下载压缩包 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz $ ...