использование md5 () для генерации ключей кеша в Zend_Cache - PullRequest
0 голосов
/ 25 июля 2011

У меня есть некоторые проблемы при сохранении идентификаторов для объектов кэша в 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 Ответ

5 голосов
/ 25 июля 2011

Мой вопрос: насколько уникальны те строки md5, которые я создаю?

Они очень уникальны. Однако чем больше у вас идентификаторов, тем вероятнее коллизия (вам нужно очень огромное количество записей!). Также вы можете поместить сгенерированные хэши в разные «пространства имен», такие как

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

Вместо хеширования вы также можете подумать об использовании самих идентификаторов. Вы сказали, что они содержат некоторые специальные символы. Вы можете очистить их, например, используя base64_encode()

...