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'])
Дополнительная литература