开发者社区> 问答> 正文

如何维护 key-value 缓存

做web,经常会用到key-value的缓存,虽然快,但缓存的维护是个问题,就拿sgementfault举例来说,如果我来做,首页的问题分页就涉及到
1.问题总数缓存
2.每页问题清单缓存

现在管理员删除了一个问题,那么为满足实时性,肯定需要更新缓存
1.问题总数缓存-1
2.每页问题清单缓存如何更新?
当然可以查数据库算出来,是否有这个必要?

这只是个例子,为了说明问题,为了更新一个缓存而造成了另外的数据库查询开销。在实际过程中,我经常用查询条件的组合作为key,这使得我在更新缓存时无从下手(虽然我自己手工维护了一个缓存key的清单,但难免会有遗漏,终归不是好办法)。但如果把缓存的key都定义死,则缓存的使用不是那么灵活。

展开
收起
a123456678 2016-06-29 10:08:31 2152 0
1 条回答
写回答
取消 提交回答
  • 建议如此处理:

    1. 问题总数缓存

    $memcached->increment('sum', $sum);
    参考:http://www.php.net/manual/zh/memcache...

    2.每页问题清单缓存如何更新?

    没有细想,如果是我的话可能会用一个end_id作为结束戳,然后有新的问题过来就向前递增,每100+汇总一次刷新,主要还是看量,脱离了量的情况下不好判断(开始小的情况下就直接刷db三分钟一次也没问题)

    2019-07-17 19:48:48
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
分布式高并发缓存6.0 立即下载
用户态高速块缓存方案 立即下载
高性能Web架构之缓存体系 立即下载