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

Php 使用md5()在Zend_缓存中生成缓存键,php,zend-framework,zend-cache,Php,Zend Framework,Zend Cache,在Zend\u cache中保存缓存对象的标识符时遇到一些问题。Zend_缓存标识符必须经过真正的消毒(没有特殊字符,没有空格等)。我的一些内部标识符中有空格,所以保存缓存对象对我来说是个问题 我正在考虑在保存zend_缓存标识符之前使用md5()转换它,例如: $cacheId = md5(self::CACHE_PREFIX . $propertyId); if (($address = $cache->load($cacheId)) === false) { .....

Zend\u cache
中保存缓存对象的标识符时遇到一些问题。
Zend_缓存
标识符必须经过真正的消毒(没有特殊字符,没有空格等)。我的一些内部标识符中有空格,所以保存缓存对象对我来说是个问题

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

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

if (($address = $cache->load($cacheId)) === false) {
  .....
    $cache->save($cacheId, $address);
}
(例如,此处,
$propertyId
可能由带空格的字符串表示)

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

我的问题是,我正在创建的md5字符串有多独特

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

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

我的问题是,我正在创建的md5字符串有多独特

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


除了散列,您还可以考虑使用ID本身。你说,它们包含一些特殊的字符。您可以对它们进行清理,例如使用

,这实际上取决于$propertyId;的唯一性。)这实际上取决于$propertyId;)的唯一性
$cacheId = 'addresses_' . md5(self::CACHE_PREFIX . $propertyId);