2016-11-05 4 views
0

Мы используем redis как кеширование. Были случаи, когда некоторые из ключей удалялись, и мы не могли найти причину. Я поставил redis keypace/keyevent для CONFIG SET notify-keyspace-events KEgxe на это уведомление. Я помещаю журналы. Но я не могу найти в своих основных журналах и в этих redis-журналах для некоторых ключей. У них есть некоторые данные в СУБД, поэтому мы уверены, что эти ключи должны были попасть в Redis. Мы очень сильно теряем состояние, на каком основании мы должны отлаживать это.Кнопки Redis автоматически удаляются.

Информация о Redis говорит, что в ней используется ~ 100 МБ, что выглядит нормально для меня. Как сохранить данные и ключи.

ответ

0

2 возможные причины:

  1. клиент не смог написать REDIS
  2. некоторый клиент удаляет эти недостающие ключи

Вы можете попытаться подписаться все об основных изменениях: CONFIG SET notify-keyspace-events AKE и журналов эти изменения в журналах, чтобы выяснить проблему.

+0

Для 1-го пункта, хотя бы для некоторых ключей, я уверен, что они были в redis, как я их видел. Для второго пункта я использовал 'KEgxe' для ведения журнала, который, как мне казалось, будет достаточным для del, expire ... поскольку ведение журнала' AKE' будет всем событием. Во всяком случае, я буду ставить 'АКЕ' и следить. Благодарю. – theGamblerRises

+0

привет @for_stack, я тоже пытался с AKE, но ничего не мог найти в журналах. Это только ухудшается. У меня есть некоторые сомнения, машина или redis перезагружены, но в этом случае я должен получить ошибку подключения. и если redis max ограничено количеством ключей или размером, то политика - lru. Мой вопрос в том, что если redis «очистит» эти ключи, это также попадет в уведомления о ключах – theGamblerRises

+0

@ theGamblerRises, если redis истекает или выселяется, он отправляет уведомление. Возможно ли, что ваше приложение неожиданно называется 'flushdb' или' flushall'? Поскольку эти команды влияют на слишком много ключей, Redis НЕ отправляет никаких уведомлений. –

Смежные вопросы