python-redis模块&操作redis
1、字符串类型
操作1:设置decode_responses参数为True,返回的key直接为字符串
import redis # decode_responses=True,取到的数据直接为字符串类型,而不是字节类型了 r = redis.Redis(host='xxxxxxx',\ port=6379,\ password='xxxx*',\ db=1,\ decode_responses=True) print(r.get("lzh_session")) print(r.set("lzh_session",'lzh123-update')) print(r.get("lzh_session")) r.delete("lzh_session")
结果:
操作2:转为字符串输出
import redis r = redis.Redis(host='xxx',port=6379,password='xxx',db=1) # 字符串类型 # 60*2 过期时间 r.set("zsb_session",'zsb123',60*2) session = r.get("zsb_session") print(session) new_session = session.decode() print(new_session)
结果:
操作3:设置前缀
1 import redis 2 3 r = redis.Redis(host='118.24.3.40',port=6379,password='HK139bc&*',db=1) 4 5 r.set("girls:lzh","1") 6 r.set("boys:zsb","1")
2、哈希类型
操作1:
import redis r = redis.Redis(host='xxx',port=6379,password='&*',db=1) # 哈希类型 # hset()方法 r.hset("ssy_student",'lzh','123') r.hset("ssy_student",'lzh2','124') # hget()方法,获取key值 print(r.hget("ssy_student",'lzh')) print(r.hget("ssy_student",'lzh').decode()) # hdel()方法,删除key r.hdel('ssy_student','lzh2')
结果:
操作2:设置key的过期时间
import redis r = redis.Redis(host='118.24.3.40',port=6379,password='HK139bc&*',db=1) # 获取所有key,返回字节类型 print(r.hgetall("ssy_student")) #{b'lzh':b'123'} # 指定某个key的过期时间 r.expire("ssy_student",50)
结果:
操作3:
import redis r = redis.Redis(host='xxx',port=6379,password='xxx',db=1) # hset()方法 r.hset("ssy_student",'lzh','123') r.hset("ssy_student",'lzh2','124') # 处理成字符串 dict = {} for key,value in r.hgetall("ssy_student").items(): dict[key.decode()] = value.decode() print(dict)
结果:
操作4:其他方法
import redis r = redis.Redis(host='xxx',port=6379,password='xxx',db=1) # hset()方法 r.hset("ssy_student",'lzh','123') r.hset("ssy_student",'lzh2','124') r.hset("ssy_teacher",'zsb','456') # 其他方法 print(r.keys()) # 所有的key print(r.keys("*student*")) # 模糊匹配 print(r.exists("lzh_session")) # key是否存在 print(r.type('lzh_session')) # key的类型 print(r.type("ssy_student"))
结果:
操作5:清空key
import redis r = redis.Redis(host='xxx',port=6379,password='xxx',db=1) r.flushdb() # 清空当前数据库里的所有key r.flushall() # 清空所有数据库里面的key
操作6:批量设置key
1 import redis 2 3 r = redis.Redis(host='xxx',port=6379,password='xxx',db=1) 4 5 d = {"a":1,"b":2,"c":3} 6 r.hmset("lzh",d)
结果:
3、小练习
1 # 练习:迁移key到另一台服务 2 # 1、连上2个redis r1 r2 3 # 2、从r1里面获取所有的key 4 # 3、判断key的类型,是hash还是string 5 # 4、从r1 get数据,set r2 6 7 import redis 8 9 r1 = redis.Redis(host='xxx',port=6379,password='xxx',db=1,decode_responses=True) 10 r2 = redis.Redis(host='xxx',port=6379,password='xxx',db=8,decode_responses=True) 11 12 13 for k in r1.keys(): 14 key_type = r1.type(k) 15 if key_type == 'string': 16 value = r1.get(k) 17 r2.set(k,value) 18 elif key_type == 'hash': 19 value = r1.hgetall(k) 20 r2.hmset(k,value) 21 else: 22 pass