redis¶
Клиент для подключения к серверу redis, сервер структуры данных
pip install redis
import redis
conn = redis.Redis()
conn.set("key1", "value1")
# True
redis_db = redis.StrictRedis(host=host, port=port, db=0)
# список ключей в базе
redis_db.keys()
Redis()¶
- class
redis.
Redis
(**kwargs)¶ host = localhost
port = 6397
db = 0
password = None
socket_timeout = None
Объект для работы с базой данных
-
get
(key)¶
-
set
(key, value)¶
-
setex
(key, expire_s, value)¶
-
psetex
(key, expire_ms, value)¶ Одиночное получение/установка данных
conn.set('k1', 'v1') # True conn.get('k1') # b'v1' conn.setex('k2', timedelta(minutes=1), 'v2') # True # установка ключа со сроком годности
-
exists
(key)¶ Проверка на существование ключа
con.exists('k3') # 0
-
expire
(key, expire_s)¶
-
pexpire
(key, expire_ms)¶ Установка нового срока годности данных
conn.expire('k1', timedelta(days=1))
-
hgetall
(key)¶
-
hincrby
(key)¶
-
keys
()¶ Возвращает список всех ключей базы
conn.keys() # [b'k1', b'k2']
-
mget
(keys)¶
-
mset
(data)¶ Множественное получение/установка данных
conn.mset({'k1': 'v1', 'k2': 'v2'}) # True conn.mget(('k1', 'k2')) # [b'v1', b'v2']
-
persist
(key)¶ Удаляет срок годности данных
con.persist('k1')
-
pipeline
()¶ Создает поток, для работы с данными.
Т.е. обработать все данные за один запрос
with conn.pipeline() as pipe: pipe.set('k1', 'v1') pipe.set('k2', 'v2') pipe.execute()
-
sadd
(k, *values)¶
-
smembers
(k)¶ conn.sadd('k1', 'v1', 'v2') # 3 conn.smembers('k1') # {b'v1', b'v2'}
-
ttl
(key)¶
-
pttl
(key)¶ Возвращает срок годности данных по ключам в секндах/миллисекундах
conn.ttl('k1') # 58 conn.pttl('k1') # 57456
conn.set("key1", "value1")
# True
conn.get("key1")
# "value1"
conn.setnx("key1", "value1")
# False
# ключ уже существует
conn.getset("key1", "new_value1")
# value1
# возвращает старое и сохраняет новое
conn.getrange("key1", -6, -1)
# "value1"
conn.setrange("key1", 0, "NEW")
conn.get("key1")
# "NEW_value1"
conn.mset({"key2": "value2"})
# True
conn.mget(("key1", "key2"))
# ["NEW_value1", "value2"]
conn.delete("fever")
# True
# время жизни ключа в секундах
conn.expire("key1", 5)
# True
conn.ttl("key1")
# 5
# время истечения ключа
conn.expireat("key1", 1233354354)
conn.set('key3', 0)
conn.incr('key3')
# 1
conn.incr('key3', 10)
# 11
conn.decr('key3')
# 10
conn.decr('key3', 7)
# 3
conn.set('key4', '101.5')
# True
conn.incrbyfloat('key4')
# 102.5
conn.incrbyfloat('key4', 0.5)
# 103.0
conn.incrbyfloat('key4', -0.5)
# 102.5
# списки могут содержать только строки
conn.lpush('key5', 'value1')
# 1
conn.lpush('key5', 'value2', 'value3')
# 3
conn.linsert('key5', 'before', 'value2', 'value4')
# 4
conn.linsert('key5', 'after', 'value2', 'value5')
# 5
conn.lset('key5', 2, 'value6')
# True
conn.rpush('key5', 'value7')
# 7
conn.lindex('key5', 3)
# 'value3'
conn.lrange('key5', 0, 2)
# 'value1', 'value2', 'value3'
conn.ltrim('key5', 1, 4)
# True
# хеши могут содержать только строки
conn.hmset("key6", {"k1": "v1"})
# True
conn.hset("key6", "k1", "n_v1")
# 1
conn.hsetnx("key6", "k2", "v2")
# 1
conn.hget("key6", "k1")
# "n_v1"
conn.hmget("key6", "k1", "k2")
# ["n_v1", "v2"]
conn.hkeys("key6")
# ["k1", "k2"]
conn.hvals("key6")
# ["n_v1", "v2"]
conn.hlen("key6")
# 2
conn.hgetall("key6")
# {"k1": "n_v1", "k2": "v2"}
conn.sadd("key11", "value1", "value2")
# 2
conn.scard("key11")
# 2
conn.smembers("key11")
# {"value1", "value2"}
conn.srem("key11", "value2")
# True
conn.sadd("key12", "value1", "value3")
# 0
# пересечение
conn.sinter("key11", "key12")
# {"value1"}
# сохранение пересечения в переменную
conn.sinterstore("key13", "key11", "key12")
# 1
conn.smembers("key13")
# {"value1"}
# объединение
conn.sunion("key11", "key12")
# {"value1", "value2", "value3"}
# сохранение объединения в переменную
conn.sunionstore("key14", "key11", "key12")
# 3
conn.sdiff("key11", "key12")
# {"value3"}
conn.sdiffstore("key15", "key11", "key12")
# 1
# упорядоченные множества
import time
now = time.time()
conn.zadd("key21", "value1", now)
# 1
conn.zadd("key21", "value2", now+(5*60))
# 1
conn.zadd("key21", "value3", now+(2*60*60))
# 1
conn.zadd("key21", "value4", now+(24*60*60))
# 1
conn.zrank("key21", "value3")
# 2
conn.zrange("key21", 0, -1)
# ["value1", "value2", "value3", "value4"]
conn.zrange("key21", 0, -1, withscores=True)
# [("value1", 123456789), ...]
# биты
conn.setbit("key41", "value1", 1)
# 0
conn.setbit("key41", "value2", 1)
# 0
conn.setbit("key42", "value1", 1)
# 0
conn.setbit("key43", "value1", 1)
# 0
conn.setbit("key43", "value3", 1)
# 0
conn.bitcount("key41")
# 2
conn.getbit("key42", "value3")
# 0
conn.bitop("and", "key44", "key41", "key42")
# 542333
conn.bitop("or", "key45", "key41", "key42")
# 542332
conn.bitcount("key44")
# 3