有什么方法可以保证 memcached 中的对象持久性吗?

Is there some way of guranteeing object permanence in memcached?

我正在使用 memcached 来存储 php 网站的全局状态。任何登录用户的请求都需要访问存储的数据。

我知道如果 memcached 已满,它只会转储最旧的对象。在这种情况下是否可以使用一些后备技术?

或者,忽略 memcached。在 Php 中存储全局状态而不诉诸 MySQL 的更快方法是什么?

您可以在会话中存储为 JSON。您还可以将 Redis(而不是 memcached)与 PHP 一起使用并设置最大内存使用量。

你的问题就像是在问如何将某物长期保存在内存中。

如果旧项目已满,Memcache 会删除旧项目,然后向其中添加另一个项目。您的应用程序的工作方式应该是,当缓存 return 为空或因任何原因被禁用时,将某些项目放入缓存的过程应该被激活。 像这样的事情: 1- 从缓存中读取项目 2- 如果项目不为空 3- return 项目 4- 从数据库(或任何其他来源)读取项目 5-将项目放入缓存 6- return 项目

缓存不是永久内存,您的应用程序应该设计成即使没有现金也能工作的方式。

然而,因为它是应用程序状态,所以可能对该项目的调用非常高,以至于不会到达队列的末尾。 虽然这不是一个好方法,但您也可以创建一个服务来从缓存中获取该项目,以防止它进入队列末尾。