开发人员提示

在memcached中足球竞彩推荐

经过 2011年2月3日 3 Comments

我们在Cakemail我们使用 memcached. 缓存我们申请所需的许多数据量。我们经常需要在其到期前从Memcached刷新数据。处理一个密钥时,这很容易,但是当您想用给定的前缀开始刷新所有键时,它会有点棘手。

由于Memcached不支持通配符删除,我们决定在我们的缓存对象中实现足球竞彩推荐法,这使我们能够做到这一点。虽然这是 不是一个新的想法,我仍然觉得它值得与你分享。

问题

假设您的应用程序是多语言,字符串存储在数据库中。您可能希望缓存这些字符串,因为它们不会经常更改。

Strings could be stored in Memcached with the given key: string_<LOCALE>_<STRING_NAME>.

更新语言意味着等待键过期或删除它们。后者是棘手的,因为您必须遍历每个字符串并逐个删除它们。

解决方案

足球竞彩推荐方式背后的想法是有一个单键,您可以使其使所有子项失效不再使用。

例如,这里是我们如何缓存我们的本地化字符串:

ns_string_en_US           => 1
string_en_US_1_welcome    => Welcome
string_en_US_1_logout     => Logout

All strings are stored using the following format: string_<LOCALE>_<NS>_<STRING_NAME>.

Whenever we want to flush an entire language all we need to do is increment the ns_string_<LOCALE> key. Doing so causes the namespace to change to 2, thus all strings are loaded from keys string_en_US_2_<STRING_NAME>.

更新: 作为 FlyingFirefox指出,上述问题可以在不使用足球竞彩推荐方式的情况下解决,但我想保持例子简单。

为了使这项任务更轻松,我们构建了一个简单的缓存对象,使用依赖项注入初始化。此时它只支持单个MEMCACHED实例,但它支持多个MEMCACHED实例,但它是非常简单的。

样本使用

代码

cache.php.

cache_service.php.

cache_memcache.php.

缺点

虽然这种技术适用于某些情况,但它可能不适用于所有情况。

  • 刷新足球竞彩推荐空间导致MEMCACHED中的内存使用情况浪费,直到旧的足球竞彩推荐空间到期,因为您仍然是aren’t实际上删除了旧密钥。这是一个’如果Memcached将删除最少的最近使用的钥匙,则虽然如果它已满,但是如果它已满,则虽然巨大的问题。
  • 获取足球竞彩推荐方式值要求您首先获取足球竞彩推荐空间值,然后是您想要的键的值。

你对Memcached足球竞彩推荐法的看法是什么?

PSST ..我们是 招聘 !! ðÿ〜‰

由Christian Joudrey,Cakemail’S铅编程序员。你可以在Twitter上追随基督徒 @cjoudrey. .

Please wait...

作者 Cakemail Support

Cakemail支持更多帖子

加入讨论 3 Comments

  • […这篇文章在Chityian Joudrey的Cukemail上提到了Twitter上。 Christian Joudrey说:在Memcached中足球竞彩推荐– http://bit.ly/filAFP […]

    Please wait...
  • 罗斯科 说:

    聪明的想法。感谢您的共享ðÿ™,

    Please wait...
  • 令人敬畏的解决方案。我肯定会在我的网站和我的PHP框架ðÿ™中实现它,

    Please wait...