redis设置过期时间与直接detele key有什么区别

Redis 中设置过期时间和直接删除 key 有以下几点区别:

  1. 效率:当使用 key 的过期时间时,Redis 会在 key 过期时自动删除它。当删除 key 时,Redis 会直接删除该 key,这两种方式的效率有所不同。在 key 的过期时间未到之前,Redis 需要对该 key 进行维护,例如检查过期时间是否到期、删除过期的 key 等,这些操作会对 Redis 的性能产生一定的影响。而当直接删除 key 时,Redis 不需要进行过多的操作,所以效率更高。
  2. 精度:当使用 key 的过期时间时,Redis 并不能保证所有 key 都在过期时间到达时被立即删除。这是因为 Redis 的过期键删除是异步的,Redis 会将一些过期的键放入一个队列中,然后定期地删除这些键。这个时间间隔是 1 秒,所以在这个时间间隔里,这些 key 其实是仍然存在 Redis 中的。而当直接删除 key 时,它会立即从 Redis 中删除。
  3. 空间:当使用 key 的过期时间时,key 实际上并未真正从 Redis 中删除,仅仅是设置了过期时间,并标记为已过期,所以在过期时间到达之前,Redis 仍然会占用该 key 的存储空间。而当直接删除 key 时,key 的存储空间会立即释放,可以被其他数据使用。
    因此,需要根据具体的应用场景来选择使用 key 过期时间还是直接删除 key。如果需要实时释放存储空间或者需要更高的删除精度,可以选择直接删除 key;如果 key 的过期时间到达后不需要立即释放存储空间或者可以容忍一定的删除精度,可以选择使用 key 的过期时间。

访问redis一个过期的key会成功吗

当访问 Redis 中一个过期的 key 时,Redis 会返回 nil(空值),表示该 key 已经不存在。虽然 key 的过期时间已经到了,但 Redis 并不会立即删除该 key,而是等待一段时间后再进行删除操作。在这个时间段内,虽然该 key 已经过期,但仍然存在于 Redis 中,并且仍然可以被查询到。只有当 Redis 定期进行过期键删除操作时,才会将过期的 key 删除并释放存储空间。因此,当访问 Redis 中一个过期的 key 时,虽然不会报错,但是返回的值为空,实际上该 key 已经不存在了。

redis设置过期时间与直接detele key有什么区别相关推荐

  1. java redis设置过期时间_Redis的一些核心原理

    点关注,不迷路:持续更新Java相关技术及资讯!!! 一.Redis的单线程和高性能 Redis 单线程为什么还能这么快? 因为它所有的数据都在内存中,所有的运算都是内存级别的运算(纳秒),而且单线程 ...

  2. java如何保证redis设置过期时间的原子性_2020年4月Redis面试题和答案整理

    点关注,不迷路:持续更新Java相关技术及资讯!!! 关注.转发.评论头条号每天分享java 知识,私信回复"源码" 赠送Spring源码分析.Dubbo.Redis.Netty. ...

  3. redis如何设置定时过期_redis补充6之Redis 设置过期时间

    一般情况下,我们设置保存的缓存数据的时候都会设置一个过期时间. Redis 中有个设置时间过期的功能,即对存储在 Redis 数据库中的值可以设置一个过期时间.作为一个缓存数据库,这是非常实用的.如我 ...

  4. java如何保证redis设置过期时间的原子性_分布式锁用 Redis 还是 Zookeeper

    在讨论这个问题之前,我们先来看一个业务场景: 系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单. 由于系统有 ...

  5. java如何保证redis设置过期时间的原子性_redis专题系列22 -- 如何优雅的基于redis实现分布式锁

    几个概念 线程锁:主要用来给方法.代码块加锁.当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段.线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比 ...

  6. Redis设置过期时间为当月月底-----自动计算

    今天在新的需求里面,有这么一个要求,要求设置redis过期时间为当月月底,意思是如果一号存进redis,则过期时间为月底:如果29号存进redis,则过期时间同样为月底.我想的就是获取当前时间,算出当 ...

  7. redis list设置过期时间_面试官:你在Redis中设置过带过期时间的Key吗?

    点击上方小伟后端笔记关注公众号 每天阅读Java干货文章 熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过 ...

  8. 设置过期时间_在Redis中设置了过期时间的Key,需要注意哪些问题?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:千山qianshan juejin.im/post/5d6b ...

  9. redis缓存失效时间设为多少_java操作Redis缓存设置过期时间的方法

    关于Redis的概念和应用本文就不再详解了,说一下怎么在java应用中设置过期时间. 在应用中我们会需要使用redis设置过期时间,比如单点登录中我们需要随机生成一个token作为key,将用户的信息 ...

最新文章

  1. 男孩子学机电一体化好还是计算机好,男孩子上完初中学什么专业好 什么专业有前途...
  2. 听说,99%的数学家都算不出这道题
  3. 2018java基础面试题(我自己用的,面试好多家公司基本会问到的问题和技术)
  4. jvm垃圾回收机制_JVM 垃圾回收机制之堆的分代回收
  5. python中lower的用法_Python lower()函数
  6. 木马的原理:解析危险的特洛伊木马恶意程序(转)
  7. 解决小程序图片上传问题
  8. html勾选标签,html怎么勾选框
  9. 精辟的人生格言,呵呵
  10. 零基础想要快速的学好3D游戏建模,兼职接单私活,来看业内人士的分析
  11. 机器视觉照明技术与装置实验研究(论文纪要)
  12. Python杀死Excel?众多模块哪家强
  13. opencv2读取摄像头并保存为视频
  14. 高级计算机维修员职业资格证书,关于国家高级计算机维修职业资格证书在太原市怎么..._出版资格_帮考网...
  15. 一台服务器支持多个域名和站点
  16. XGBoost目标函数推导
  17. 自动驾驶系列(二) - 路径规划五种算法简述及对比
  18. sql注入的原理详解
  19. Latex学习笔记(七)参考文献模板
  20. 【算法百题之十八】18年网易面试题,小易买水果

热门文章

  1. 格兰杰检验的基本步骤_【Stata教程】格兰杰因果检验
  2. 【每天一个Python小知识】用yaml的yaml.safe_load()方法读取配置文件中的参数
  3. Gym - 101128H:Sheldon Numbers
  4. 十进制数与其他进制数转换方法及原理
  5. PatchWork组织Herbminister行动武器库大揭秘
  6. KeyShot Pro 9 v9.0 安装教程(含下载文件)
  7. Django框架 (一)———基本简介+基本认知
  8. 膨胀珍珠岩板(EPB) 保温材料英国UKCA 认证-EN 13169
  9. 浅析<router-view> v-slot事例
  10. 【IT运维小知识】安全组是什么意思?