redis模块安装:pip install redis
连接redisimport redis
# 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库
conn = redis.Redis(host='localhost', port=6379, decode_responses=True)
# host是redis主机,需要redis服务端和客户端都启动 redis默认端口是6379
# ecode_responses=True,写入的键值对中的value为str类型,不加这个参数写入的则为字节类型
redis基本命令 String
set(name, value, ex=None, px=None, nx=False, xx=False)
在Redis中设置值,默认,不存在则创建,存在则修改
参数:
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行
xx,如果设置为True,则只有name存在时,当前set操作才执行
1.ex,过期时间(秒) 这里过期时间是3秒,3秒后p,键food的值就变成Noneimport redis
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
conn = redis.Redis(connection_pool=pool)
conn.set('food', 'mutton', ex=3)
# key是"food" value是"mutton" 将键值对存入redis缓存
print(conn.get('food'))
# mutton 取出键food对应的值
2.px,过期时间(豪秒) 这里过期时间是3豪秒,3毫秒后,键foo的值就变成Noneimport redis
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
conn = redis.Redis(connection_pool=pool)
conn.set('food', 'beef', px=3)
print(conn.get('food'))
3.nx,如果设置为True,则只有name不存在时,当前set操作才执行 (新建)import redis
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
conn = redis.Redis(connection_pool=pool)
conn.set('food', 'beef', nx=True)) # True--不存在
print(conn.get('food'))
4.xx,如果设置为True,则只有name存在时,当前set操作才执行 (修改)import redis
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
conn = redis.Redis(connection_pool=pool)
conn.set('food', 'beef', xx=True))) # True--已经存在
print(conn.get('food'))
5.setnx(name, value) 设置值,只有name不存在时,执行设置操作(添加)import redis
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
conn = redis.Redis(connection_pool=pool)
conn.set('food', 'beef', px=3)
print(r.setnx('food', 'banana')) # food不存在,输出为True
6.setex(name, value, time)设置值
参数:
time,过期时间(数字秒 或 timedelta对象)conn.setex("fruit", "apple", 5)
time.sleep(5)
print(conn.get('fruit')) # 5秒后,取值就从apple变成None
7.psetex(name, time_ms, value) 设置值
参数:
time_ms,过期时间(数字毫秒 或 timedelta对象)conn.psetex("fruit3", 5000, "apple")
time.sleep(5)
print(conn.get('fruit3')) # 5000毫秒后,取值就从apple变成None
8.mset(*args, **kwargs)批量设置值conn.mget({'k1': 'v1', 'k2': 'v2'})
conn.mset(k1="v1", k2="v2") # 这里k1 和k2 不能带引号 一次设置对个键值对
print(conn.mget("k1", "k2")) # 一次取出多个键对应的值
print(conn.mget("k1"))
9.mget(keys, *args)批量获取print(conn.mget('k1', 'k2'))
print(conn.mget(['k1', 'k2']))
# 将目前redis缓存中的键对应的值批量取出来
print(conn.mget("fruit", "fruit1", "fruit2", "k1", "k2"))
10.getset(name, value)设置新值并获取原来的值pri
10.getrange(key, start, end)获取子序列(根据字节获取,非字符)
参数:
name,Redis 的 name
start,起始位置(字节)
end,结束位置(字节)pri