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

 

posted @ 2020-05-26 22:30  tour8  阅读(327)  评论(0)    收藏  举报