我正在使用memcached来存储php网站的全局状态。存储的数据需要被来自任何登录用户的请求访问。有没有在memcached中保证对象永久性的方法?
我知道,如果memcached得到满了,它只会转储最旧的对象。在这种情况下可以使用一些回退技术吗?
或者,忽略memcached。什么是在不借助MySQL的情况下在PHP中存储全局状态的更快方式?
我正在使用memcached来存储php网站的全局状态。存储的数据需要被来自任何登录用户的请求访问。有没有在memcached中保证对象永久性的方法?
我知道,如果memcached得到满了,它只会转储最旧的对象。在这种情况下可以使用一些回退技术吗?
或者,忽略memcached。什么是在不借助MySQL的情况下在PHP中存储全局状态的更快方式?
您可以在会话中存储为JSON。您也可以使用Redis(而不是memcached)和PHP并设置最大内存使用量。
Redis似乎是一个不错的选择,谢谢。关于会议,是不是每个用户,即不是全球? –
是的,会话是每个用户。对于全球性的东西,请使用Redis。 – Eric
你的问题就像问一个问题,如何长时间保持记忆。
如果旧项目已满并且您将其他项目添加到其中,则Memcache将删除旧项目。应用程序的工作方式应该是,当缓存返回null或由于某种原因而被禁用时,应该激活将某些项放入缓存的过程。 soemthing这样的: 1-读取从高速缓存 2-项目,如果该项目不是null 3-返回的项目 4-读取从数据库的产品(或任何其它源) 5-放项在高速缓存 6-返回项目
缓存不是一个永久性内存,您的应用程序应该设计成即使没有现金也能工作。
但是,因为它是应用程序状态,所以对该项目的调用可能很高,不会进入队列末尾。 虽然这不是一个好方法,但您也可以创建一个服务来从缓存中获取该项目,以防止它进入队列末尾。
好奇你不愿意使用MySQL吗? – bnxio
只是想加快速度。我存储的所有数据都是按9个数组排列的每个用户的元组{'userid','state1','state2','state3}。 –