一、安装
pip install redis
二、使用
连接
'''
提供两个类 Redis 和 StrictRedis, StrictRedis 用于实现大部分官方的命令,Redis 是 StrictRedis 的子类,用于向后兼用旧版本。
没设置密码时不需要加password
取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串。
'''
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0, password='redis',decode_responses=True)
r.set('key','value')
print(r.get('key'))
连接池
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.set('key2','value2')
print(r.get('key2'))
string
set
import redis
import time
'''
set(name, value, ex=None, px=None, nx=False, xx=False)
ex - 过期时间(秒)
px - 过期时间(毫秒)
nx - 如果设置为True,则只有name不存在时,当前set操作才执行
xx - 如果设置为True,则只有name存在时,当前set操作才执行
'''
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.set('key2','value2',ex=1)
print(r.get('key2'))
time.sleep(2)
print(r.get('key2'))
mset
'''
批量存储
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.mset({'key3':'value3','key4':'value4'})
print(r.mget('key3','key4'))
getset
'''
设置新值并获取原来的值
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.mset({'key3':'value3','key4':'value4'})
res = r.getset('key4','value5')
print(res)
print(r.mget('key3','key4'))
getrange
'''
获取子序列(根据字节获取,非字符)
一个汉字3个字节 1个字母一个字节 每个字节8bit
参数:
name
start - 起始位置(字节)
end - 结束位置(字节)
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
print(r.getrange('key3', 0, 2))
strlen
'''
返回name对应值的字节长度(一个汉字3个字节)
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
print(r.strlen('key3'))
incr/decr
'''
自增 name 对应的值,当 name 不存在时,则创建 name=amount/-amount,否则,则自增/自减。
参数:
name
amount - 自增数(必须是整数)
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.incr('key_incr', amount=3)
print(r.get('key_incr'))
incrbyfloat
'''
自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
参数:
name
amount - 自增数(浮点型)
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.incrbyfloat('key_incrbyfloat', amount=3.5)
print(r.get('key_incrbyfloat'))
append
'''
在redis name对应的值后面追加内容
参数:
key - name
value - 要追加的字符串
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.append('key1', 'ooo')
print(r.get('key1'))
map
hset
'''
name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
参数:
name
key - name对应的hash中的key
value - name对应的hash中的value
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.hset("hash1", "k1", "v1")
r.hset("hash1", "k2", "v2")
print(r.hgetall("hash1")) #取出所有的键值对
print(r.hlen("hash1")) #得到所有键值对的格式 hash长度
print(r.hkeys("hash1")) # 取hash中所有的key
print(r.hvals("hash1")) # 取hash中所有的value
print(r.hget("hash1", "k1")) # 单个取hash的key对应的值
print(r.hmget("hash1", "k1", "k2")) # 多个取hash的key对应的值
print(r.hexists("hash1", "k1")) #判断成员是否存在(类似字典的in)
hmset
'''
在name对应的hash中批量设置键值对
参数:
name
mapping - 字典,如:{'k1':'v1', 'k2': 'v2'}
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.hmset("hash2", {"k2": "v2", "k3": "v3"})
print(r.hgetall("hash2")) #取出所有的键值对
print(r.hlen("hash2")) #得到所有键值对的格式 hash长度
print(r.hkeys("hash2")) # 取hash中所有的key
print(r.hvals("hash2")) # 取hash中所有的value
print(r.hget("hash2", "k2")) # 单个取hash的key对应的值
print(r.hmget("hash2", "k2", "k3")) # 多个取hash的key对应的值
print(r.hexists("hash2", "k1")) #判断成员是否存在(类似字典的in)
hdel
'''
删除键值对
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.hdel("hash1", "k1")
print(r.hgetall("hash2")) #取出所有的键值对
hincrby(整数)/hincrbyfloat(浮点数)
'''
自增name对应的hash中的指定key的值,不存在则创建key=amount
参数:
name
key - hash对应的key
amount - 自增数(整数)
'''
import redis
pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.hset("hash1", "k3", 123)
r.hincrby("hash1", "k3", amount=-1)
print(r.hgetall("hash1"))