注册
登录
memcache
并发写入memcache
返回
并发写入memcache
作者:
老人与海。
发布时间:
2024-04-19 02:00:11 (1天前)
转自:
你能帮我解决一下我的问题吗?我有一些慢的mysql查询,所以我将其结果缓存到
内存缓存 跨度> 。 我做这样的事情: $ data = get_from_cache(); if(!$ data){ $ data -
收藏
举报
2 条回复
0#
回复此人
易米烊光
|
2019-08-31 10-32
这被称为
狗堆
问题。
策略:打破Memcache狗堆
描述了两种方法:
解决方案1:
将来设置缓存项过期时间。
嵌入与该值序列化的“真实”超时。例如,将项目设置为24小时内超时,但嵌入式超时可能是将来的五分钟。
在从缓存获取时,确定过期超时是否到期并在到期时立即设置将来的时间并按原样重新存储数据。这关闭了风险窗口。
从数据库中获取数据并使用最新值更新缓存。
解决方案2:
在memcached中创建两个密钥:MAIN密钥,其到期时间略高于正常值+ STALE密钥,该密钥先前过期。
在获取STALE键时也是如此。如果陈旧过期,请重新计算并再次设置陈旧密钥。
编辑
登录
后才能参与评论