开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: hulala889
收起左侧

[已解决] 有什么自动过期的存储办法?

 关闭 [复制链接]
结帖率:96% (23/24)
发表于 2025-6-4 17:13:49 | 显示全部楼层   河南省新乡市
存在本地的话就像上面那个老哥说的一样,数据中写 储存的数据+过期时间
程序中进行判断,如果数据过期就进行删除
不过如果想实现程序关闭后也能过期删除,可能得用些其他的方法
比如关闭后如果检测到还有未过期的数据就假关闭,进程隐藏在后台继续进行判断,等到所有数据都过期后才会真关闭之类的方法

点评

忘了说了,会需要查找字符串是否存在的,如果用这个方法,查找起来只能计次循环去找,数据多了,非常慢   广西壮族自治区玉林市  发表于 2025-6-4 17:18
回复

使用道具 举报

结帖率:83% (43/52)

签到天数: 2 天

 楼主| 发表于 2025-6-4 17:17:18 | 显示全部楼层   广西壮族自治区玉林市
辽阳小哲 发表于 2025-6-4 16:33
1、自定义变量,成员1为文本型,放你要存储的字符串。成员2为日期时间型,放字符串的存储时间。
2、定义数 ...

忘了说了,会需要查找字符串是否存在的,如果用这个方法,查找起来只能计次循环去找,数据多了,非常慢
回复

使用道具 举报

结帖率:96% (23/24)

签到天数: 3 天

发表于 2025-6-4 17:25:11 | 显示全部楼层   河南省新乡市
有个不太成熟的想法
比如现在创建一个json.现行时间(比如是17:23)+五分(想让其留存多久就写多久).文本数据
然后程序内每隔一秒判断一次,每次到了现行时间(比如是17:28)就将json.17:28直接删除,以此类推17:24,17:25

点评

这样还不如直接建文件,判断创建时间直接开个线程定时清理,但是读写太快也是吃力   广西壮族自治区玉林市  发表于 2025-6-4 17:28
回复

使用道具 举报

头像被屏蔽
发表于 2025-6-4 17:27:08 | 显示全部楼层   广东省珠海市
又想速度快又要兼具你的需求用网络数据库吧

点评

网络数据库不知道有没有这个例子?   广西壮族自治区玉林市  发表于 2025-6-4 17:29
回复

使用道具 举报

签到天数: 10 天

发表于 2025-6-5 08:04:47 | 显示全部楼层   辽宁省辽阳市
hulala889 发表于 2025-6-4 17:17
忘了说了,会需要查找字符串是否存在的,如果用这个方法,查找起来只能计次循环去找,数据多了,非常慢 ...

你测试过么?虽然我没有测试过,但是我觉得不会很慢。你最好测试一下。
回复

使用道具 举报

结帖率:78% (18/23)

签到天数: 2 天

发表于 2025-6-5 08:47:04 | 显示全部楼层   浙江省嘉兴市
不想用库,那用数组变量,或是用文本文件。
回复

使用道具 举报

结帖率:93% (42/45)

签到天数: 6 天

发表于 2025-6-5 14:32:45 | 显示全部楼层   广东省汕头市

方式一:懒惰删除(Lazy Deletion)

思路:

只有在读缓存(Get)或写缓存(Set)时,才检查这个 key 是否过期,如果过期就直接删除并返回“miss”。

优点:

简单,不需要额外的后台任务。

适合低访问量或访问频率不高的场景。

缺点:

可能导致过期数据长期占用内存(除非访问它)。

方式二:定时任务(Periodic Cleanup)

思路:

定期(比如每 1 分钟)扫描所有缓存项,删除已过期的项。

优点:

过期数据可以被及时清理,避免占用内存。

适合数据量大但访问不均匀的场景。

缺点:

需要额外的线程或定时器。

如果数据量非常大,可能造成一次性 CPU 峰值。

方式三:基于最小堆(Heap)或优先队列

思路:
将所有缓存项按照过期时间排序(通常用最小堆),堆顶永远是最近要过期的 key。然后启动一个定时器等到最近的过期时间到期,再批量删除。

优点:

实时性高,过期数据可以准时清理。

适合对过期严格要求的场景(例如 API Token、短周期任务)。

缺点:

实现复杂,需要并发安全的优先队列。

对于大量数据,维护堆的开销比较大。

大部分生产环境(如 Redis)其实是 TTL + 懒惰删除 + 定时清理的组合。

点评

感谢你的方案,还是选择了用redis,方便省事   广西壮族自治区玉林市  发表于 2025-6-6 13:40
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表