【问题标题】:using md5() to generate cache keys in Zend_Cache在 Zend_Cache 中使用 md5() 生成缓存键
【发布时间】:2011-07-25 16:02:59
【问题描述】:

我在Zend_Cache 中保存缓存对象的标识符时遇到了一些问题。 Zend_Cache 标识符必须经过真正的清理(无特殊字符、无空格等)。我的一些内部标识符中有空格,所以保存缓存对象对我来说是个问题。

我正在考虑在保存之前使用 md5() 转换 zend_cache 标识符,例如:

$cacheId = md5(self::CACHE_PREFIX . $propertyId);

if (($address = $cache->load($cacheId)) === false) {
  .....
    $cache->save($cacheId, $address);
}

(例如,$propertyId 可能是带有空格的字符串)

我的问题是我创建的那些 md5 字符串有多独特?我的两个缓存对象有可能具有相同的标识符吗?有什么建议吗?

【问题讨论】:

  • 这真的取决于 $propertyId 的唯一性;)

标签: php zend-framework zend-cache


【解决方案1】:

我的问题是我创建的那些 md5 字符串有多独特?

它们非常独一无二。但是,您拥有的 ID 越多,冲突的可能性就越大(您需要 非常 大量的条目!)。您也可以将生成的哈希放入不同的“命名空间”中,例如

$cacheId = 'addresses_' . md5(self::CACHE_PREFIX . $propertyId);

除了散列之外,您还可以考虑使用 ID 本身。你说,它们包含一些特殊字符。您可以对它们进行消毒,例如使用base64_encode()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多