【问题标题】:How to implement memcached using a database?如何使用数据库实现 memcached?
【发布时间】:2009-09-10 07:58:37
【问题描述】:

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

目前我的团队还没有准备好使用 memcached。

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

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

Concurrent logins in a web farm

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

计划:

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

问题:

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

【问题讨论】:

    标签: java mysql concurrency memcached


    【解决方案1】:

    memcache 已经有一个变体,它是持久的:

    http://memcachedb.org/

    还可以查看 tokyo cabinet:http://1978th.net/,据说速度要快得多

    R

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

    memcache也是这样的

    【讨论】:

    • 谢谢。这正是我需要知道的。我听说过很多关于这些 nosql 数据库的精彩内容,但恐怕将 Tokyo Cabinet、Redis 等引入我的架构会对团队造成太大的破坏。
    【解决方案2】:

    不知道你说的是什么

    有没有很好用的超时方法 Mysql 中的一行?

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

    例如;

    MemcachedClient c= // get memcachedclient reference...
    
          if (c != null) {
                c.set(key, timeToLiveInSeconds, objectToCache);
            }
    

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

    【讨论】:

      猜你喜欢
      • 2015-07-09
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多