标签:color 需要 tab html 自动删除 保存 extern 实现 gets
本文可以作为之前的一个 原理性文章 对应的 技术实现部分 。
此处给出其上文的直达电梯:
http://www.cnblogs.com/beer/p/6029861.html
所谓的 “数据生命周期” 是指:为数据设定一定的生存期限,过了这个时间后, 此数据就被删除掉(失效)。
在进行web开发的时候,有很多需求场景是要求数据是具有一定的生命周期,比如:
本文将以如下两种数据库特性为例子来对此功能的实现进行介绍:
在mongodb中有个 TTL(Time To Live 生存时间)索引 功能:
TTL索引是一种特殊索引,通过这种索引 MongoDB 会过一段时间后自动移除集合中的文档。 这对于某些类型的信息来说是一个很理想的特性,例如: 机器生成的事件数据,日志,会话信息等,这些数据都只需要在数据库中保存有限时间。
在 mongodb 中的实现方式:
db.ttl_log_session.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
主要解释如下:
达到的效果:以 lastModifiedDate 时刻开始,经过 3600 秒之后,此文档会失效被删除掉。
删除操作的一些注意事项:
在文档过期和MongoDB从数据库中删除文档之间,可能会有延迟。
在文档过期之后和后台任务运行或者结束之前,文档会依然存在于集合中(删除操作还没有完成)。
在两次后台任务运行的间隔间,过期数据可能会继续留在数据库中超过60秒。
redis是一个内存数据库,它具备快速IO的特点。在性能上会比Mongodb进行大幅度提升。
通过如下方式:
EXPIRE key seconds
为给定的key设置生存时间,当key过期时(生存时间为0),它会被自动删除。
如下是一些设置生存时间相关的基本操作:
redis> SET cache_page "www.google.com" OK redis> EXPIRE cache_page 30 # 设置过期时间为 30 秒 (integer) 1 redis> TTL cache_page # 查看剩余生存时间 (integer) 23 redis> EXPIRE cache_page 30000 # 更新过期时间 (integer) 1 redis> TTL cache_page (integer) 29996
注意事项:
就算key已经过期,但它还是可能在过期之后一秒钟之内被访问到
在新的 Redis 2.6 以后的版本中,延迟被降低到 1ms 之内
在进行web开发过程中,很多场合都需要用到数据的生命周期的功能。 关于如何实现此功能时,可以参考如下结论后再进行相应的技术选型:
本文关于 "数据生命周期" 主题的主要结论如下:
在进行技术选型时注意在如下几个特性上进行比较:
最终能够得出合适自己的技术方案,实现自己系统的功能。
作者: | Harmo哈莫 |
---|---|
作者介绍: | https://zhengwh.github.io |
技术博客: | http://www.cnblogs.com/beer |
Email: | dreamzsm@gmail.com |
QQ: | 1295351490 |
时间: | 2016-02 |
版权声明: | 欢迎以学习交流为目的读者随意转载,但是请 【注明出处】 |
支持本文: | 如果文章对您有启发,可以点击博客右下角的按钮进行 【推荐】 |
标签:color 需要 tab html 自动删除 保存 extern 实现 gets
原文地址:http://www.cnblogs.com/beer/p/6030882.html