import redis
# 1、set get setex delete都是针对值是字符串类型进行操作
r = redis.Redis(host=‘x.x.x.x‘,port = 6379,password = ‘123456‘,db = 1) # r.set(‘am_session‘,‘20122222222‘) #set数据,增加一条数据 # print(r.get(‘am_session‘).decode()) #get数据,redis取出的数据都是bytes类型的,所以要用decode方法转化成字符串 # # r.delete(‘cm_session‘) # r.setex(‘am_ssss‘,‘chenmeng‘,10) #新建一条数据,可以指定key的失效时间,单位是秒
#
# # 2、hash类型set、get数据的方式:一个session,类似字典,不同key对应不同的值
1 # r.hset(‘cmsessions‘,‘cm‘,‘1‘) 2 # r.hset(‘cmsessions‘,‘cm1‘,‘12‘) 3 # r.hset(‘cmsessions‘,‘cm2‘,‘123‘) 4 # # print(r.hget(‘cmsessions‘,‘cm2‘).decode()) #获取hash类型某个key的数据 5 # # redis_data = r.hgetall(‘cmsessions‘) # 获取hash类型的所有数据,返回字典,但是里面都是二进制:{b‘cm‘: b‘1‘, b‘cm2‘: b‘123‘, b‘cm1‘: b‘12‘} 6 # #
# # #解析hash类型中的二进制数据,都换成正常字符串
x
1 # r.hset(‘cmsessions‘,‘cm‘,‘1‘) 2 # r.hset(‘cmsessions‘,‘cm1‘,‘12‘) 3 # r.hset(‘cmsessions‘,‘cm2‘,‘123‘) 4 # # print(r.hget(‘cmsessions‘,‘cm2‘).decode()) #获取hash类型某个key的数据 5 # # redis_data = r.hgetall(‘cmsessions‘) # 获取hash类型的所有数据,返回字典,但是里面都是二进制:{b‘cm‘: b‘1‘, b‘cm2‘: b‘123‘, b‘cm1‘: b‘12‘} 6 # #
#
# #hash类型没有过期时间
#
#
# # 3.如果需要在文件夹中添加session,带冒号,多个层级的文件夹多个冒号即可
# r.set(‘cm:am_session‘,‘20122222222‘)
#
#
# # 4.获取所有的key
# print(r.keys()) #获取所有的key
# print(r.keys(‘cm*‘)) #获取所有以cm开头的key
# print(r.type(‘cmsessions‘)) #获取所有kye的类型,hash类型是:b‘hash‘,普通返回类型是b‘string‘
#5.db2中所有的key迁移到db8
#a 建立两个redis链接
#b 获取所有的key,返回b开头的byte类型,所有判断类型的时候,b‘string‘
#c 判断key的类型,string hash
1 # src_redis = redis.Redis(host=‘X.x.x.x‘,port = 6379,password = ‘123456‘,db = 4) 2 # target_redis = redis.Redis(host=‘X.x.x.x‘,port = 6379,password = ‘123456‘,db = 3) 3 # for key in src_redis.keys(): #[b‘session3‘, b‘wy:wy1:wy2‘, b‘session_wy‘, b‘wangyan‘] 4 # if src_redis.type(key) == b‘string‘: 5 # v = src_redis.get(key) 6 # target_redis.set(key,v) 7 # else: #hash类型处理 8 # all_hash_data = src_redis.hgetall() 9 # for k,v in all_hash_data.item(): 10 # target_redis.hset(key,k,v)