2016-07-25 64 views
0

我正在使用memcached来存储php网站的全局状态。存储的数据需要被来自任何登录用户的请求访问。有没有在memcached中保证对象永久性的方法?

我知道,如果memcached得到满了,它只会转储最旧的对象。在这种情况下可以使用一些回退技术吗?

或者,忽略memcached。什么是在不借助MySQL的情况下在PHP中存储全局状态的更快方式?

+0

好奇你不愿意使用MySQL吗? – bnxio

+0

只是想加快速度。我存储的所有数据都是按9个数组排列的每个用户的元组{'userid','state1','state2','state3}。 –

回答

0

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

+0

Redis似乎是一个不错的选择,谢谢。关于会议,是不是每个用户,即不是全球? –

+0

是的,会话是每个用户。对于全球性的东西,请使用Redis。 – Eric

0

你的问题就像问一个问题,如何长时间保持记忆。

如果旧项目已满并且您将其他项目添加到其中,则Memcache将删除旧项目。应用程序的工作方式应该是,当缓存返回null或由于某种原因而被禁用时,应该激活将某些项放入缓存的过程。 soemthing这样的: 1-读取从高速缓存 2-项目,如果该项目不是null 3-返回的项目 4-读取从数据库的产品(或任何其它源) 5-放项在高速缓存 6-返回项目

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

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