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

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

它们非常独特。但是,您拥有的id越多,就越有可能发生冲突(您需要非常大量的条目!)。还可以将生成的哈希放到不同的"命名空间"中,比如

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

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

相关内容

  • 没有找到相关文章

最新更新