2009-09-10 115 views
1

据我所知,memcached运行在内存中,并没有持久的后备存储。如何使用数据库实现memcached?

目前我的团队尚未准备好使用memcached。

所以,我打算写一个简单的数据库支持的替代方案。

我的问题是类似的静脉非常本的其他问题

Concurrent logins in a web farm

我的web应用程序有明确的条目(登录)和出口(注销)点。

计划:

  1. 在登录时,我会添加用户ID到一个表。
  2. 在注销时,我将删除包含用户标识的行。

问题:

是否有一个用得好,方法在MySQL超时行?通过方法,我的意思是一个最佳实践。一旦达到超时,该行就被删除。

回答

2

已经存在的内存缓存变体是持久:

http://memcachedb.org/

还检查了东京柜:http://1978th.net/这理应是要快得多

[R

编辑: 重读你的题。让我补充一点: 实现timetolive的方法,只是添加一个时间戳列到您的数据库。 下次获取缓存项目时,请检查时间戳记是否过旧,并在此时删除条目,获取全新副本,并将其放回到数据库缓存中并显示当前时间戳记

这是也顺便内存缓存做它

+0

感谢。这正是我所需要知道的。我听说过有关这些nosql数据库的许多奇妙的事情,但是我担心将东京内阁,Redis等等引入到我的架构中会对团队造成太大的干扰。 – 2009-09-10 09:46:43

1

不知道什么ü由

意味着有一个很好用的方法来超时 MySQL中的行?

我们使用内存缓存作为基于对象缓存的装置,它可以被设置为一个传输TimeToLive值

为例如.;

MemcachedClient c= // get memcachedclient reference... 

     if (c != null) { 
      c.set(key, timeToLiveInSeconds, objectToCache); 
     } 

后在规定的时间内将被删除自动