Использование md5() для генерации ключей кеша в Zend_Cache
У меня есть некоторые проблемы с сохранением идентификаторов для объектов кэша в Zend_Cache
, Zend_Cache
идентификаторы должны быть действительно очищены (без специальных символов, без пробелов и т. д.). Некоторые из моих внутренних идентификаторов содержат пробелы, поэтому для меня проблема заключается в сохранении объектов кэша.
Я думал о преобразовании идентификатора zend_cache с использованием md5() перед его сохранением, например:
$cacheId = md5(self::CACHE_PREFIX . $propertyId);
if (($address = $cache->load($cacheId)) === false) {
.....
$cache->save($cacheId, $address);
}
(Вот например, $propertyId
может быть строкой с пробелами)
Мой вопрос: насколько уникальны те строки md5, которые я создаю? Возможно ли, чтобы два из моих объектов кэша имели одинаковый идентификатор? Какие-либо предложения?
1 ответ
Мой вопрос: насколько уникальны те строки md5, которые я создаю?
Они очень уникальны. Однако чем больше у вас идентификаторов, тем вероятнее коллизия (вам нужно очень большое количество записей!). Также вы можете поместить сгенерированные хеши в разные "пространства имен", такие как
$cacheId = 'addresses_' . md5(self::CACHE_PREFIX . $propertyId);
Вместо хеширования вы также можете подумать об использовании самих идентификаторов. Вы сказали, что они содержат некоторые специальные символы. Вы можете очистить их, например, используя base64_encode()