使用md5()在Zend_Cache中生成缓存键

时间:2011-07-25 16:03:00

标签: php zend-framework zend-cache

我在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字符串有多独特?我的两个缓存对象是否可能具有相同的标识符?有什么建议吗?

1 个答案:

答案 0 :(得分:5)

  

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

他们非常独特。但是,您拥有的ID越多,碰撞就越可能(您需要非常大量的条目!)。您还可以将生成的哈希值放入不同的“名称空间”,如

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

您也可以考虑使用ID本身而不是哈希。你说,它们包含一些特殊字符。你可以消毒他们,例如使用base64_encode()