我在Redis数据库中有4个密钥。这些密钥从现在开始到期10秒。我已将密钥添加到集合中。当密钥过期时,它们实际上不在数据库中(获取返回空值)。但是,键仍然是该组的成员。该集合将继续存在,直到从集合中删除密钥为止,此时它已从数据库中有效地消失。

密钥过期时,是否可以自动从密钥集中删除密钥?

我正在考虑为每个键维护一个集合以维护它所属的集合(在键和集合之间创建一个有向图集合关系),然后注册键过期事件以在必要时删除集合成员。作为db的使用者,这是一个很大的开销,而不是作为某种背景清理线程。而且,这样的方法将是“尽力而为”清理集合,因为订阅到期事件的客户代码可能会崩溃,无法获得通知,积压等。

我可能已经能够通过将密钥集建模为散列集中的字段来避免任何欺骗,但我希望在实践中每个密钥具有不同的到期TTL。如果这是可能的,那么如何呢?

例如,这里是我的一组“foo”键。

mine:0>set foo1 barA

OK

mine:0>set foo2 barB

OK

mine:0>set foo3 barC

OK

mine:0>set foo4 barD

OK他们可以添加到一个集合。

mine:0>sadd foo foo1 foo2 foo3 foo4

4

mine:0>smembers foo

1) foo1

2) foo3

3) foo4

4) foo2钥匙可以过期...

mine:0>expire foo1 10

1

mine:0>expire foo2 10

1

mine:0>expire foo3 10

1

mine:0>expire foo4 10

1

mine:0>get foo1

NULL

mine:0>get foo2

NULL

mine:0>get foo3

NULL

mine:0>get foo4

NULL

mine:0>get foo5

NULL此时键不存在,但该键确实存在,并且它引用键。

mine:0>smembers foo

1) foo1

2) foo3

3) foo4

4) foo2显式删除键将从集中删除它们,然后在删除所有集合后将其设置为不存在。

mine:0>srem foo foo1

1

mine:0>srem foo foo2

1

mine:0>srem foo foo3

1

mine:0>srem foo foo4

1

mine:0>smembers foo

[nothing returned]

redis集合数据过期_如何从Redis中的集合中自动删除过期的密钥?相关推荐

  1. java 日志过期删除吗,log4j2 自动删除过期日志文件的配置及实现原理

    日志文件自动删除功能必不可少,当然你可以让运维去做这事,只是这不地道.而日志组件是一个必备组件,让其多做一件删除的工作,无可厚非.本文就来探讨下 log4j 的日志文件自动删除实现吧. 0.自动删除配 ...

  2. memcpy后数据不对_详解Redis 的 5 种基本数据结构:

    来源:我没有三颗心脏 一.Redis 简介 "Redis is an open source (BSD licensed), in-memory data structure store, ...

  3. redis lua 设置过期_详解 Redis 内存管理机制和实现

    Redis是一个基于内存的键值数据库,其内存管理是非常重要的.本文内存管理的内容包括:过期键的懒性删除和过期删除以及内存溢出控制策略. 最大内存限制 Redis使用 maxmemory 参数限制最大可 ...

  4. redis 设置不过期_面试时 Redis 内存淘汰总被问,但是总答不好,怎么解决?

    什么是内存淘汰 内存淘汰,和平时我们设置redis key的过期时间,不是一回事:内存淘汰是说,假设我们限定redis只能使用8g内存,现在已经使用了这么多了(包括设置了过期时间的key和没设过期时间 ...

  5. redis 清空db下_如何清空redis中的数据

    Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key ). 语法 redis Flushall 命令基本语法如下:redis 127.0.0.1:63 ...

  6. redis 命令 数据清理_如何在命令行中清理数据

    redis 命令 数据清理 我是兼职数据审计师. 可以将我视为校对员,使用数据表而不是散文页面. 这些表是从关系数据库中导出的,通常大小适中:100,000至1,000,000条记录和50至200个字 ...

  7. redis 启动无输出_深入剖析Redis系列: Redis入门简介与主从搭建

    前言 Redis 是一种基于 键值对 的 NoSQL 数据库.与很多键值对数据库不同,Redis 提供了丰富的 值数据存储结构,包括 string(字符串).hash(哈希).list(列表).set ...

  8. redis key命名规范_公司内部 Redis 使用规范

    前言 在业务中,会经常使用 Redis 作为后端缓存.存储.如果结构规划不合理.命令使用不规范,会造成系统性能达到瓶颈.活动高峰系统可用性下降,也会增大运维难度.为了避免出现因 Redis 使用不当, ...

  9. redis watch使用场景_详解redis中的锁以及使用场景

    分布式锁 什么是分布式锁? 分布式锁是控制分布式系统之间同步访问共享资源的一种方式. 为什么要使用分布式锁? ​ 为了保证共享资源的数据一致性. 什么场景下使用分布式锁? ​ 数据重要且要保证一致性 ...

最新文章

  1. ORL Faces Database介绍
  2. mysql+在服务中无法启动_MySQL服务初始化后无法启动
  3. Vuforia Android 6 Camera Error
  4. Add-in Express for Office and .NET v7.3支持VS 2013预览
  5. 算法录 之 复杂度分析。
  6. 基于Boost::beast模块的无栈协程http服务器
  7. 1_boostrap概述
  8. python导入xlsxwriter要安装什么吗_windows下安装Python的XlsxWriter模块方法
  9. 苹果七绕过基带激活2020_苹果漏洞,可跳过苹果激活锁
  10. python while循环if_初入python 用户输入,if,(while 循环)
  11. Go语言微服务开发框架:Go chassis
  12. Linux-pthread如何设置线程的优先级
  13. 在.NET中探测U盘的插入/拔出
  14. FleaPHP 开发基础 - 第一部分
  15. 编译protoc方法名称被自动大写
  16. 极点五笔烦人的几个快捷键.
  17. Pycharm进入debug模式后一直显示collecting data解决方法
  18. python古诗代码案例_用python实现古诗词横板竖版显示 【二维列表的使用】
  19. FFMPEG保存视频流数据至本地(rtsp转mp4)
  20. 入坑数据分析的几个问题——学习、面试、作报告

热门文章

  1. DeepMind首席科学家:比起机器智能,我更担心人类智能造成的灾难
  2. 获国家杰青的北大教授,被985本科生嫌弃本科学校太差!被网友怒怼!
  3. 百万粉女极客突袭深圳手机公司:你们说想要源码就来自取?我来了
  4. 清晰易懂的Focal Loss原理解释
  5. windows下:ERROR 1366 (HY000): Incorrect string value: ‘\xC1\xF5\xB1\xB8‘ for column ‘name‘ at row 1
  6. attr,abbr,addr三个常见的单词意思
  7. CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3是什么呢?
  8. C语言数组只会输出两个!_只愿与一人十指紧扣_新浪博客
  9. 2022 年计算机视觉的三大趋势
  10. 【NLP】博士笔记 | 深入理解深度学习语义分割