import redis
r = redis.Redis(host='118.24.1.40',
password='HK13ewc&*',
port='639',
db=4,
decode_responses=True#默认redis返回的结果是字符串
)
#string类型操作
# set方法
r.set('geng','set方法')#value必须为字符串
r.set('方便面','{"price":2.5,"count":100}')
#bytes类型 一般图片都是bytes类型
#从redis中取值;
data = r.get('geng')# redis默认返回的数据类型是字节类型bytes
# print(data.decode())#把字节类型转换为字符串
#删除redis中的key#删除redis中的key
r.delete('geng')
#更改redis中某个key的value
r.set('方便面','xxx')
#设置过期时间,单位是秒
expire_time = 60*2 #60秒*2 = 2分钟
r.set('geng2','123456',expire_time)
s = '加油呀'
print(s.encode())#字符串转换为字节
#hash
#存值,hset方法
r.hset('students','geng','{"class":tmz}')
r.hset('students','long','{"class":自学成才}')
r.hset('students','yi','{"class":baby}')
#获取值hget
print(r.hget('students','geng'))#获取某个key值
print(r.hgetall('students'))#获取所有key值,获取到的是个字典
#删除某个key值
r.hdel('students','geng')
#修改
# r.hset()
#设置过期时间,hash类型只能对外面的大key设置过期时间
h_expire_time = 60*2
r.expire('students',h_expire_time)
#获取当前数据库所有的key,返回结果是list
print(r.keys())
#获取当前数据库以g开头的key,返回结果是list
print(r.keys('g*'))
#获取当前数据库的类型,string还是hash类型
print(r.type('geng'))
print(r.type('students'))
#清空当前数据库所有的key
r.flushdb()
#清空所有数据库的key
r.flushall()
#管道(批量操作)
#管道(批量操作)
p = r.pipeline()#建立管道
# p.hset('students','geng','{"class":tmz}')
# p.hset('students','long','{"class":自学成才}')
# p.hset('students','yi','{"class":baby}')
p.exists('students123')#判断students数据库是否存在
p.hgetall('students')#获取students库里所有的值
s = p.execute()#执行管道,返回一个list,这个list里是每个pip命令的执行结果
print(s)
print(r.exists('students123'))#判断students数据库是否存在
输出结果:
迁移redis
#迁移redis
r = redis.Redis(host='ip',
password='密码',
port=端口号,
db=第几个数据库,#如:db=4
decode_responses=True#默认redis返回的结果是字符串
)
r2 = redis.Redis(host='ip',
password='密码',
port=端口号,
db=第几个数据库,#如:db=4
decode_responses=True#默认redis返回的结果是字符串
)
p = r2.pipeline()#r2使用管道存数据
for k in r.keys():#r.keys(),获取r 数据库中所有的key
key_type = r.type(k)#获取r数据库中某个key的类型
if key_type == 'string':
value = r.get(k)#获取r数据库key表的value
p.set(k,value)#把从r库获取到的key和value放到r2中
elif key_type=='hash':
hash_data = r.hgetall(k) #{'xx':xxx},获取到的结果是字典类型
print('hash_data结果:',hash_data)
for filed,data in hash_data.items():
p.hset(k,filed,data)
p.execute()
备注:r.hgetall(库名)方法
k表示的是某个数据库名,也就是students