Рубрики
Без рубрики

Как написать свой собственный послушный слушатель ключа Redis в Python

Сейчас мы строим Thatbot для нашей компании, которая будет работать как API без гражданства, где она дает … Теги с Python, Redis, RediskeyValueexpire.

Прямо сейчас мы строим Chatbot для нашей компании, которая будет работать как API без гражданства, где она дает ответ на основе сообщения пользователя. Для управления разговорами чата, рабочий процесс, сеанс и все остальные вещи, которые мы создали приложение, используя Ракетный чат Отказ Таким образом, API, которые мы являемся зданием, в основном принимают пользовательский ввод, затем использование экстрактов NLP намерения и объекты, используя те, которые оно создает ответное сообщение. Мы использовали Redis для поддержания пользовательского контекста.

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

Позвольте мне показать вам, как я реализовал.

Во-первых, нам нужно сделать небольшое изменение в Config redis, чтобы включить уведомления об испуске по умолчанию, его отключено для сохранения питания CPU. Для этого у нас есть 2 подхода

  1. Запустите ниже команду redis-cli config настроек notify-keyspace-события Бывший
  2. Обновите файл Config Redis и перезапустите его. Если вы используете Ubuntu, как я, скорее всего, вы найдете файл Config redis на “/etc/redis/redis.conf” Отказ Откройте файл конфигурации и обновите Notify-keyspace-события "" к Notify-keyspace-события Бывший

Я взял 2-й подход кстати. Если вы хотите узнать больше об этой настройке, прочитайте здесь Отказ Теперь наш Redis готов к излучению ключевых событий истекает события, поэтому нам нужно написать код, слушай их.

Сначала давайте установим Redis Package.

pip3 install redis

У нас есть эта проблема «событие скажет вам, какой ключ истек, но он не даст вам его значение, и вы не можете получить значение, потому что ключ уже истек.»

Чтобы решить эту проблему, что мы сделаем, это всякий раз, когда мы создаем ключ и ценность с этим, мы также создадим ключ теневой клавиши, и мы получим время истечения ключей И когда мы получаем уведомление о сроке Shadow Key, мы получим исходный ключ и значение и удалите исходный ключ от Redis. Ура, наша проблема решена.

Этот код поможет вам с этим

Теперь запустите файл Python

python3 redis-key-expire-listener.py

В настоящее время Чтобы проверить его открытым Redis-CLI

$ redis-cli

Давайте установим наш ключ и ценность

127.0.0.1:6379> SET testkey 100
OK

Тогда давайте создадим ключ тени с истечением 10 секунд

127.0.0.1:6379> SET shadowKey:testkey "" EX 10
OK

Если вы видите терминал, в котором мы запустим наш код слушателя, вы получите этот вывод через 10 секунд, когда нажата тень истекший

Handler {'type': 'pmessage', 'pattern': b' __keyevent@0__ :expired', 'channel': b' __keyevent@0__ :expired', 'data': b'shadowKey:testkey'}
Got Value: b'100'

Поздравляю!!! Ваш слушатель ключа Redis истекает готов.

Мир. Счастливое кодирование.

Оригинал: “https://dev.to/tankala/how-to-write-your-own-redis-key-expire-listener-in-python-ldk”