Простой Python. Современный стиль программирования (Любанович) - страница 142

Строки

Ключ, имеющий одно значение, является строкой Redis. Простые типы данных Python автоматически преобразовываются. Подключимся к серверу Redis, расположенному на некотором хосте (по умолчанию localhost) и порте (по умолчанию 6379):

>>>> import redis

>>>> conn = redis.Redis()

Строки redis.Redis('localhost') или redis.Redis('localhost', 6379) дадут тот же результат.

Перечислим все ключи (которых пока нет):

>>>> conn.keys('*')

>[]

Создадим простую строку (с ключом 'secret'), целое число (с ключом 'carats') и число с плавающей точкой (с ключом 'fever'):

>>>> conn.set('secret', 'ni!')

>True

>>>> conn.set('carats', 24)

>True

>>>> conn.set('fever', '101.5')

>True

Получим значения согласно заданным ключам:

>>>> conn.get('secret')

>b'ni!'

>>>> conn.get('carats')

>b'24'

>>>> conn.get('fever')

>b'101.5'

Метод setnx() устанавливает значение, но только если ключа не существует:

>>>> conn.setnx('secret', 'icky-icky-icky-ptang-zoop-boing!')

>False

Метод не сработал, поскольку мы уже определили ключ 'secret':

>>>> conn.get('secret')

>b'ni!'

Метод getset() возвращает старое значение и одновременно устанавливает новое:

>>>> conn.getset('secret', 'icky-icky-icky-ptang-zoop-boing!')

>b'ni!'

Не будем сильно забегать вперед. Это сработало?

>>>> conn.get('secret')

>b'icky-icky-icky-ptang-zoop-boing!'

Теперь мы получим подстроку с помощью метода getrange() (как и в Python, смещение обозначается как 0 для начала списка и -1 для конца):

>>>> conn.getrange('secret', -6, -1)

>b'boing!'

Заменим подстроку с помощью метода setrange() (используя смещение, которое начинается с нуля):

>>>> conn.setrange('secret', 0, 'ICKY')

>32

>>>> conn.get('secret')

>b'ICKY-icky-icky-ptang-zoop-boing!'

Далее установим значения сразу нескольких ключей с помощью метода mset():

>>>> conn.mset({'pie': 'cherry', 'cordial': 'sherry'})

>True

Получим более одного значения с помощью метода mget():

>>>> conn.mget(['fever', 'carats'])

>[b'101.5', b'24']

Удалим ключ с помощью метода delete():

>>>> conn.delete('fever')

>True

Выполним инкремент с помощью команд incr() и incrbyfloat() и декремент с помощью команды decr():

>>>> conn.incr('carats')

>25

>>>> conn.incr('carats', 10)

>35

>>>> conn.decr('carats')

>34

>>>> conn.decr('carats', 15)

>19

>>>> conn.set('fever', '101.5')

>True

>>>> conn.incrbyfloat('fever')

>102.5

>>>> conn.incrbyfloat('fever', 0.5)

>103.0

Команды decrbyfloat() не существует. Используйте отрицательный инкремент, чтобы уменьшить значение ключа fever:

>>>> conn.incrbyfloat('fever', -2.0)

>101.0

Списки

Списки Redis могут содержать только строки. Список создается, когда вы добавляете первые данные. Добавим данные в начало списка с помощью метода lpush():