加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如果数据已满,memcached中的数据如何被替换,以及memcache

发布时间:2020-12-13 18:08:42 所属栏目:PHP教程 来源:网络整理
导读:来自memcached wiki: When the table is full,subsequent inserts cause older data to be purged in least recently used (LRU) order. 我有以下问题: 将清除哪些数据?是插入较旧的那个,还是最近最少使用的那个?我的意思是,如果最近访问的数据是d1,这是
来自memcached wiki:

When the table is full,subsequent inserts cause older data to be purged in least recently used (LRU) order.

我有以下问题:

>将清除哪些数据?是插入较旧的那个,还是最近最少使用的那个?我的意思是,如果最近访问的数据是d1,这是最老的插入和缓存已满,而替换数据将取代d1?
>我使用PHP与memcached进行交互.我可以控制memcached中数据的替换方式吗?就像我不希望我的一些数据被替换,直到它过期,即使缓存已满.不应替换此数据,而是可以删除其他数据以进行插入.
>数据过期后会立即删除吗?
>存储在memcached性能上的密钥数量有什么影响?
> memcached.conf中-k选项的意义是什么?我无法理解“锁定所有分页内存”的含义.此外,README中的描述是不够的.

当memcached需要在内存中存储新数据,并且内存已满时,会发生什么:

> memcached搜索合适的*过期条目,如果找到,则替换该条目中的数据.哪个答案点3)数据不会立即删除,但是当应该设置新数据时,会重新分配空间
>如果未找到过期条目,则替换最近最少使用的条目

*请记住memcached如何处理内存:它分配??不同大小的块,因此您要在缓存中设置的数据大小在决定删除哪个条目时起作用.条目为2K,4K,8K,16K ……等,最大为1M.

所有这些信息都可以在in the documentation找到,所以请仔细阅读.正如@deceze所说,memcached并不保证数据在内存中可用,你必须为缓存未命中风暴做好准备.避免风暴的一个有趣的方法是设置一个随机偏移的过期时间,例如10 [0..10]分钟,这意味着一些项目将被存储10,其他项目将被存储20分钟(目标不是所有项目同时到期).

如果你想在缓存中保留一些东西,你必须做两件事:

>一个预热脚本,要求缓存加载数据.所以最近总是使用它
> 2项目的到期时间:一个真正的到期时间,比方说30分钟;另一个 – 与项目一起缓存 – 逻辑到期时间,让我们说在10分钟内.从缓存中检索数据时,检查逻辑到期时间以及是否已过期 – 重新加载数据并将其在缓存中再设置30分钟.这样,您永远不会达到真正的缓存过期时间,并且会定期刷新数据.

5) What is the significance of -k option in “memcached.conf”. I am not
able to understand what does “Lock down all paged memory” means. Also
description in README is also not sufficient.

无论你为memcached分配多少内存,它都只会使用它所需的数量,例如:它只分配实际使用的内存.但是,使用-k选项时,在启动memcached时会保留整个内存,因此无论是否需要,它总是分配全部内存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读