Использование 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()

Другие вопросы по тегам