我的项目是创建一个像Memcached这样的程序。该程序是密钥、值和缓存item.Its的过期时间的存储列表,这意味着在n秒钟后将删除数据。我想我可以用struct来存储键和值,但是我不能在n秒钟后删除数据,你能给我一些解决方案吗?谢谢大家
发布于 2020-07-07 16:06:30
只是懒洋洋地删除。
您不需要立即删除过期数据。为了维护数据存储的语义,只需做两件事:
换句话说,当您碰巧遇到过期的数据时,删除它就足够了,这要么是因为它显示为对查询的响应,要么是因为它占用了存储更新所需的一个插槽。
为了简化对过期数据的检测,您应该将实际的过期时间存储在结构中,而不是保存的时间。然后很容易看出密钥/值对是否已过期:您只需将过期时间与当前时间进行比较即可。
如果使用链式哈希,则可以在搜索该链时编辑哈希链(通过删除过期项)。如果使用开放寻址,则可以用墓碑替换过期条目(也可以将“过期”用作墓碑)。在这两种情况下,如果您找到要查找的键,但条目已过期,则可以终止搜索,如果是查询,则返回"key not“,或者如果是更新,则用新数据覆盖数据(和过期时间)。
注意:
由于客户必须检查到期时间,因此,如果数据存储仅在更新条目时检查过期日期,则不会在技术上明确违反合同。但是,由于不发送绝对过期的数据的成本非常低,因此几乎不值得担心,因此,包含签入查询和更新似乎是合理的。
发布于 2020-07-07 15:22:28
用计时器怎么样?
您可以使用time.h中的time_t结构和
clock()函数。
使用time_t将开始时间存储在clock()结构中,并通过比较存储时间和当前时间之间的差异来检查运行时间。
解释了Here。
https://stackoverflow.com/questions/62778517
复制相似问题