Чтобы использовать 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 довольно прост. Методы вызываются так же, как и команды, можно только задаться вопросом, как передать определенные параметры, но для этого есть документация.