Redis использует только 1 ключ в базе данных

Я настроил Redis в качестве механизма кэширования на своем сервере с сайтом Wordpress. В основном при каждом запросе я проверяю, существует ли кеш страницы, а затем показываю кеш.

Я использую Predis (https://github.com/nrk/predis) в качестве интерфейса для база данных редис.

Однако, когда я получаю информацию об использовании Redis, я вижу только 1 ключ, используемый в системе:

used_memory:103810376
used_memory_human:99.00M
used_memory_rss:106680320
used_memory_peak:222011768
used_memory_peak_human:211.73M
mem_fragmentation_ratio:1.03
mem_allocator:jemalloc-2.2.5
loading:0
aof_enabled:0
changes_since_last_save:8
bgsave_in_progress:0
last_save_time:1396168319
bgrewriteaof_in_progress:0
total_connections_received:726918
total_commands_processed:1240245
expired_keys:22
evicted_keys:0
keyspace_hits:1158841
keyspace_misses:699
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:21712
vm_enabled:0
role:master
db0:keys=1,expires=0

Как это могло произойти? Я ожидаю увидеть больше ключей в списке, так как каждая кешированная копия html страницы должна иметь свой собственный ключ?

Что мне здесь не хватает?


person Patrick Steenks    schedule 30.03.2014    source источник


Ответы (1)


Не глядя на техническую реализацию, это может быть несколько вещей.

1) Страницы не попали, значит их нет в кеше

2) Срок действия ключей уже истек

3) Механизм использует, например, HSET , где вы можете зарегистрировать N ключей/значений под 1 основным ключом. . Вы можете проверить это, используя команду TYPE redis для единственного ключа, который у вас есть.

person Tw Bert    schedule 30.03.2014
comment
О, отлично, это указывает мне правильное направление. Мы действительно используем hset для подключения к Redis, но я не знал, что в нем можно зарегистрировать N пар ключ/значение. В чем основное преимущество использования HSET по сравнению с SET? - person Patrick Steenks; 30.03.2014
comment
Хэши были добавлены в Redis 1.4 (не так давно). Они были предназначены для хранения объектов внутри Redis, где вы можете получить доступ к различным элементам данных по отдельности. Но (как и все в Redis) вы можете использовать его для любых целей. Мы предпочитаем HSET обычным SET/GET, чтобы все было организовано. Это выбор, потому что HSET имеет небольшие накладные расходы (два поиска в словаре вместо одного; ключ плюс член). Подробнее о типах данных Redis можно прочитать здесь. Если вы планируете использовать SORT, внимательно прочитайте. - person Tw Bert; 30.03.2014