redis的用法:
import redis #下面都是操作string类型的 r = redis.Redis(host='127.0.0.1', port=6379, db=1)#链接redis数据库 r.set('fei','fei值')#set数据,增加key为:‘fei’对应的value值为:‘fei值’ print(r.get('fei').decode())#获取到key为“fei”的value值,如果不加.decode,打印出来以后就显示是乱码,加上以后,正常显示中文
>>> fei值
print(r.keys())#获取所有的key
>>>[b'fei', b'nhy', b'ID_card']
#下面操作hash类型 r.hset('fei1','name','haha')#对fei1进行操作,设置key值为“name”,对应的value值为“haha” print(r.hget('fei1','name'))#获取fei库里面key值为‘name’对应的value值
>>>b'haha'
print(r.hgetall('ID_card'))#获取hash类型这个ID_card里面所有的数据
>>>{b'age2': b'18', b'name': b'haha', b'age1': b'18', b'age': b'18'}
r.delete('nhy')#删除key
#把哈希类型转换成字符串,如下方法:
nhy = r.hgetall('fei1')#把fei1这个数据哈希类型的赋给nhy
new_nhy = {}# 新创建一个字典
print(nhy)
for k in nhy:#循环这个字典里的key值
new_k = k.decode()#把k值转换成字符串,赋值给新的key值
v = nhy[k]#获取哈希类型的key对应的value值
new_v = v.decode()#把value值转化成字符串,赋值给新值
new_nhy[new_k] = new_v #新key值 = 对应的新value值
#需求是把一个redis库里面所有的数据,导入到另一个redis里面
#1、r1 和r2 连接上r1和r2两个数据库
#2、 获取到r1上面所有的key keys
#3、判断key的类型,r.type(k),get hgetall .hset() .set()
r1 = redis.Redis(host='127.0.0.1', port=6378, db=0)#获取数据
r2 = redis.Redis(host='127.0.0.1', port=6378, db=1)#写数据
keys = r1.keys()#r1数据库上所有的key
for k in keys:
if r1.type(k) == b'hash':#判断是否为哈希类型,因为redis里面返回的数据都是bytes类型的,
#所以在hash前面加上b
hash_data = r1.hgetall(k)#获取哈希的类型的数据
for k2, v in hash_data.items():#循环刚才获取到的字典
r2.hset(k, k2, v)#set哈希类型的值
else:
v = r1.get(k)#从r1里面获取值,
r2.set(k, v)#set进去