如何使用数据库实现memcached?

时间:2009-09-10 07:58:37

标签: java mysql concurrency memcached

据我所知,memcached在内存中运行,并且没有持久的后备存储。

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

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

我的问题与其他问题非常相似

Concurrent logins in a web farm

我的webapp有明确的入口(登录)和退出(退出)点。

计划:

  1. 登录时,我会将用户ID添加到表格中。
  2. 注销时,我将删除包含用户ID的行。
  3. 的问题:

    是否有一个常用的方法来超时Mysql中的一行?通过方法,我的意思是最佳实践。达到超时后,该行将被删除。

2 个答案:

答案 0 :(得分:3)

memcache已经存在一个持久性变体:

http://memcachedb.org/

还要检查东京内阁:http://1978th.net/据说速度要快得多

[R

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

这也是memcache的方式

答案 1 :(得分:1)

不确定

的含义
  

是否有一种常用的超时方法   Mysql中的一行?

我们使用Memcache作为基于对象的缓存的手段,它可以设置为timetolive值

例如;

MemcachedClient c= // get memcachedclient reference...

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

在规定的时间段后,它将自动删除