赞助商

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

发布时间:2019-06-11 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了php – 如果数据已满,memcached中的数据如何被替换,以及memcache的性能?脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
来自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时会保留整个内存,因此无论是否需要,它总是分配全部内存.

总结

以上是脚本之家为你收集整理的php – 如果数据已满,memcached中的数据如何被替换,以及memcache的性能?全部内容,希望文章能够帮你解决php – 如果数据已满,memcached中的数据如何被替换,以及memcache的性能?所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签: