Redis


Установка

sudo apt-get install redis-server
sudo systemctl start redis

sudo pip3 install redis

connect

import redis

try:
    REDIS = redis.StrictRedis(host='localhost', port=6379, db=0, password=None, charset='utf-8', decode_responses=True)
    ping = REDIS.ping()
except ConnectionError as e:
    print('error', str(e))

# redis по умолчанию работает с 16-ю базами (переключение параметром db = 0..15)
# если этого недостаточно, количество баз можно увеличить в redis.conf (параметр databases)
ARTICLE = redis.StrictRedis(host='localhost', port=6379, db=1, password=None, charset="utf-8", decode_responses=True)
SECTION = redis.StrictRedis(host='localhost', port=6379, db=2, password=None, charset="utf-8", decode_responses=True)

set / get

redis = app.config['REDIS']

redis.set('article:',100)
redis.set('article:3',200)
redis.set('article:2',300)
redis.set('article',400)

# способ 1 - получить значение по ключу
print(redis.get('article:3'))

# способ 2 - получить значение по ключу
print(redis['article:3'])

# способ 3 - получить значения по шаблону ключа
for key in redis.scan_iter('article:*'):
    print('%s \t %s' % (key, redis.get(key)))

# способ 4 - удаление всех пар ключ:значение
for key in redis.scan_iter():
    redis.delete(key)

# способ 5 - удаление всех пар ключ:значение
for key in redis.keys():
    redis.delete(key)

hash (python-dict)

redis = app.config['REDIS']

mydict = {'1':11, '2':22, '3':33}

# способ 1
redis.hmset('Dict', mydict)

# способ 2
for k,v in mydict.items():
    redis.hset('Dict', k, v)

print(redis.hgetall('Dict')) # return all values as string!

list

redis = app.config['REDIS']

# добавить 'слева/справа' (элементы добавляются, а не заменяются!)
redis.lpush('mylist', 'a', 'b', 'c')
redis.rpush('mylist', 'd')

# добавить словарь (элементы добавляются, а не заменяются!)
lst = [1,2,3,4,5,6]
redis.lpush('mylist', *lst)

# удаление 'слева/справа'
redis.lpop('mylist')
redis.rpop('mylist')

redis.ltrim('mylist', 2, 4)

# получить диапазон
print( redis.lindex('mylist', 2) )
print( redis.lrange('mylist', 0, -1) )

json

redis = app.config['REDIS']

import json
data = {'a': 'b', 'c': 42, 'd':[1,2,3,4]}
redis.set('json:data', json.dumps(data))

unpack = json.loads(redis.get('json:data'))
print(unpack['d'])

Дополнительная литература