Язык программирования Python

Как работать с базой данных Redis в Python

Чтобы использовать Redis в наших Python-проектах, первое, что нам нужно сделать, это установить его. Для этого мы запускаем следующую команду:

pip install redis

В этой статье я буду использовать Docker и контейнер Redis, но вы можете установить его на свою систему. Если вы хотите посмотреть более подробную информацию о том, как установить Redis, я оставляю эту ссылку.

Подключение к Redis с помощью Python

Если мы хотим подключиться к Redis из Python, нам просто нужно вставить следующую строку в наш код:

r = redis.Redis(host='127.0.0.1', port=6379, db=0)
Code language: JavaScript (javascript)

В нем вы должны будете заменить хост, порт и db на свои.

В случае если ваша база данных использует пароль или вы хотите добавить дополнительную конфигурацию, вы должны установить соединение с помощью метода StrictRedis:

r = redis.StrictRedis(host='127.0.0.1', port=6379, db=0, password=None, socket_timeout=None, connection_pool=None, charset='utf-8', errors='strict', unix_socket_path=None)
Code language: JavaScript (javascript)

Создание и извлечение данных

Если мы хотим установить значение, нам просто нужно использовать метод set с ключом и значением:

r.set('foo', 'bar')
Code language: JavaScript (javascript)

Чтобы получить его, мы воспользуемся методом get, передав ключ в качестве параметра:

r.get('foo')
Code language: JavaScript (javascript)

Этот метод возвращает значение ключа в байтовом формате. Если мы хотим преобразовать его в строку, мы можем использовать функцию decode:

r.get('foo').decode("utf-8")
Code language: JavaScript (javascript)

Добавление времени жизни данным

В случае, если мы хотим установить время жизни для наших ключей, мы можем использовать параметр ex, чтобы добавить, сколько секунд мы хотим, чтобы они существовали, или px, если мы хотим добавить время в миллисекундах:

r.set('foo', 'bar', ex=10)
Code language: JavaScript (javascript)

В этом случае ключ foo будет иметь время жизни 10 секунд.

Чтобы узнать, сколько времени осталось жить, мы можем использовать методы ttl для отображения в секундах и pttl для отображения в миллисекундах:

r.pttl('foo')
Code language: JavaScript (javascript)

Если мы передумаем и решим снять ограничение по времени, мы воспользуемся методом persist:

r.persist('foo')
Code language: JavaScript (javascript)

Если теперь мы захотим добавить время жизни к этому ключу, мы воспользуемся методом setex, в котором нам нужно будет передать ключ, время жизни и значение, которое мы хотим ему присвоить:

r.setex('foo', 15, 'bar2')
Code language: JavaScript (javascript)

Если мы хотим передать его в миллисекундах, то воспользуемся методом psetex.

Атомарные операции

Атомарная операция в Redis – это процесс, который всегда выполняется полностью, а если это не так, то он может быть отменен.

В случае Redis мы можем использовать их для создания увеличивающихся и уменьшающихся значений для наших ключей. Для того чтобы их использовать, создадим ключ с числовым значением, а затем запустим функцию, которая будет увеличивать и уменьшать значение этого ключа:

r.set('счетчик', '5') r.incr('счетчик') # значение равно 6 r.incr('счетчик') # значение равно 7 r.decr('счетчик') # значение равно 6
Code language: PHP (php)

Если мы хотим увеличить значение, мы используем метод incr, в противном случае мы используем метод decr.

Если мы хотим увеличить или уменьшить значение на заданное нами число, а не по одному, мы будем использовать методы incrby и decrby, в которых мы передадим ключ и значение:

r.set('счетчик', '5') r.incrby('счетчик', '3') # значение равно 8 r.incrby('счетчик', '4') # значение равно 12 r.decrby('счетчик', '5') # значение равно 7
Code language: PHP (php)

Заключение

Как видите, переход от Redis в консоли на язык Python довольно прост. Методы вызываются так же, как и команды, можно только задаться вопросом, как передать определенные параметры, но для этого есть документация.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *