前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Redis 设置过期时间

Redis 设置过期时间

作者头像
happyJared
发布于 2019-08-23 09:04:10
发布于 2019-08-23 09:04:10
4.1K0
举报
文章被收录于专栏:happyJaredhappyJared

Redis 中有个设置时间过期的功能,即对存储在 redis 数据库中的值可以设置一个过期时间。

作为一个缓存数据库,这是非常实用的。

比如,一般项目中的 Token 或是 Cookie 信息,尤其是短信验证码,都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。

我们 set key 的时候,都可以给一个 expire time,也就是过期时间,这样就指定了这个 key 可以存活的时间。

假设我们设置了一批只能存活1个小时的 key,那么1小时后,redis 是怎么对这批 key 进行删除的?

答案是:定期删除 + 惰性删除

  • 定期删除:redis 默认每隔 100ms 就 随机抽取 那些设置了过期时间的 key,检查其是否过期,如果过期,就删除。注意,这里是随机抽取的。为什么要随机呢?想想,假如 redis 存了几十万个 key ,每隔 100ms 就遍历所有设置了过期时间的 key 的话,会给 CPU 带来很大的压力
  • 惰性删除 :定期删除可能会导致很多过期的 key 到了时间并没有被删除掉,所以就有了惰性删除。假如过期 key,靠定期删除没有被删除掉,还缓存在内存里,此时当程序去查那个 key 时,redis 如果判断过期,就会给删除掉,这就是所谓的惰性删除
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.08.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
读完这篇文章,就基本搞定了Redis数据库
简单来说 Redis 就是一个数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的,所以存写速度非常快,因此 Redis 被广泛应用于缓存方向。
顾翔
2019/12/11
8090
读完这篇文章,就基本搞定了Redis数据库
Redis过期key删除策略以及内存淘汰策略
众所周知,Redis是一种内存级kv数据库,所有的操作都是在内存里面进行,定期通过异步操作把数据库数据flush到硬盘上进行保存。因此它是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作。虽然是内存数据库,但是其数据可以持久化,而且支持丰富的数据类型。
高性能架构探索
2021/04/13
2.1K0
Redis过期键的删除策略[通俗易懂]
Redis中有个设置时间过期的功能,即对存储在 redis 数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的 token 或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。
全栈程序员站长
2022/07/25
8600
Redis
简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
一点博客
2019/10/15
1.1K0
Redis
面试必问:redis过期key删除和内存淘汰策略
众所周知,Redis是一种内存级kv数据库,所有的操作都是在内存里面进行,定期通过异步操作把数据库数据flush到硬盘上进行保存。因此它是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作。虽然是内存数据库,但是其数据可以持久化,而且支持丰富的数据类型。
高性能架构探索
2022/08/25
4890
面试必问:redis过期key删除和内存淘汰策略
Redis面试好题整理
50、Redis支持哪几种数据类型? 字符串String、字典Hash、列表List、集合Set、有序集合SortedSet; 如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。 String字符串: 格式: set key value string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 string类型是Redis最基本的数据类型,一个键最大能存储512MB。 Hash(哈希) 格式:
BUG弄潮儿
2020/08/30
6290
一篇文章了解Redis数据库
redis是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步。简单来说 Redis 就是一个数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的,所以存写速度非常快,因此 Redis 被广泛应用于缓存方向。Redis 也经常用来做分布式锁。Redis 提供了多种数据类型来支持不同的业务场景。除此之外,Redis 支持事务 、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。
创译科技
2019/08/16
6900
一篇文章了解Redis数据库
2022年Redis最新面试题第6篇 – Redis淘汰策略「建议收藏」
1)、关于定期删除, Redis默认会每隔100ms就随机选取一些已经过期了的key,检查其是否过期,如果已经过期就删除。
全栈程序员站长
2022/11/01
6910
【redis】全局命令exists、del、expire、ttl(惰性删除和定期删除)
Redis 组织这些 key 就是按照哈希表的方式来组织的。Redis 支持很多数据结构指的是 value 可以是一些复杂的数据结构 Redis 自身的这些键值对,是通过哈希表的方式来组织的,Redis 具体的值,又可以是一些数据结构
椰椰椰耶
2025/03/09
1230
【redis】全局命令exists、del、expire、ttl(惰性删除和定期删除)
Redis过期策略和内存淘汰机制
Redis缓存作为提高系统性能最好的方式相信大家对其一定不陌生,各位作为秃头老码农不仅需要掌握Redis的基础用法还得了解Redis的相关原理,比如Redis过期策略和内存淘汰机制。
JAVA日知录
2020/08/17
6320
Redis中的Key是否在过期时间到达后立即被删除?详解Redis的过期策略
在现代软件开发中,性能和数据存储是至关重要的。为了在高并发环境下提供快速的数据访问和存储,我们经常会使用缓存技术。Redis(Remote Dictionary Server)作为一种高性能的键值存储数据库,被广泛应用于各种应用场景。在使用Redis的过程中,我们经常会遇到数据过期的情况。那么,当Redis中的Key到达过期时间后,它会立即被删除吗?本文将深入探讨Redis的过期策略,带你了解背后的机制。
疯狂的KK
2023/08/16
5.4K0
Redis中的Key是否在过期时间到达后立即被删除?详解Redis的过期策略
Redis 过期策略
我们都知道redis中的key是可以设置过期时间的,那到了过期时间redis是怎么处理这些key的呢? 首先我们先了解下过期时间是如何存储的. 一. key过期时间存储 通过server.h可见,ke
一个架构师
2022/06/20
8700
什么?我往Redis里写的数据怎么没了?
能坚持别人不能坚持的,才能拥有别人不能拥有的。
编程大道
2020/02/11
1K0
redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?
所谓定期删除,指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。
IT技术小咖
2019/11/22
6250
redis内存的淘汰机制
Redis是基于内存存储,常用于数据的缓存,所以Redis提供了对键的过期时间的设置,实现了几种淘汰机制便于适应各种场景。
Java技术债务
2022/08/09
4230
阿里面试题(1)redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?
阿里面试题(1)redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?
Java架构师必看
2021/06/17
3770
Redis知识点总结(一)
Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把redis数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
Vincent-yuan
2021/05/11
6560
Redis知识点总结(一)
Redis系列总结--这几点你会了吗?
前面几篇已经对Redis中几个关键知识点做了介绍,本篇主要对Redis系列做一下总结以及对Redis中常见面试题简单进行介绍一下。首先我们对前面几篇谈到的Redis知识点进行总结。
创译科技
2019/09/30
6370
Redis系列总结--这几点你会了吗?
redis的过期策略和内存淘汰机制
转载自 https://blog.csdn.net/weixin_42463676/article/details/80843711
allsmallpig
2021/02/25
4650
Redis6.0.6的三大内存过期策略和八大淘汰策略
Redis在我们日常开发中是经常用到的,Redis也是功能非常强大,可以进行缓存,还会有一些排行榜、点赞、消息队列、购物车等等;当然还有分布式锁Redisson,我们使用肯定少不了集群!小编最近学习到一些内存如果满了Redis是怎么操作呢?肯定像我们JVM一样,有回收或者淘汰的机制!今天小编和大家一起学习一下,小编也是看了阳哥的课,觉得讲的很好,记录一下,希望可以帮助到大家!!
掉发的小王
2022/07/11
4170
推荐阅读
相关推荐
读完这篇文章,就基本搞定了Redis数据库
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文