python--操作Redis

import redis
r = redis.Redis(host='200.100.200.00',port=6300,password='123400',db=0)#连上redis
r.set('nhy_session','201801211505') #set数据
r.get('马佩佩').decode()
#redis里面取出来的数据都是bytes类型的,所以要用.decode方法转成字符串
r.delete('马佩佩')#删除一个
r.setex('nhy','hahah',20) #可以指定key的失效时间,单位是秒‘

# set get delete setex 都是针对string类型的 k - v
#hash类型:
r.hset('sessions','nhy','123456')  #插入数据
r.hget('sessions','xsr')  #获取数据
redis_data = r.hgetall('sessions') #获取到hash类型里面所有的数据

all_data = {}
for k,v in redis_data.items():  #把hash类型里面所有的数据转成正常的字典
k = k.decode()
v = v.decode()
all_data[k]=v
#hash类型没有过期时间

#下面这种是有层级的:
r.set('txz:ybq','没交') 
print(r.keys())#获取所有的key
print(r.keys('txz*')) #以txz开头的key
print(r.type('sessions'))#获取key的类型

Redis迁移:
 
 
import redis

src_redis = redis.Redis(host='200.100.200.10',port=6300,password='123400',db=0)#连上redis
target_redis = redis.Redis(host='200.100.210.10',port=6300,password='123400',db=10)#连上redis
for key in src_redis.keys():
if src_redis.type(key) == b'string': #判断key的类型,因为redis数据取出来都是二进制的,所以这里也用bytes
v = src_redis.get(key) #先获取到原来的数据
target_redis.set(key,v) #再set到新的里面
else:
all_hash_data = src_redis.hgetall(key) #先获取到hash类型里面所有的数据
for k,v in all_hash_data.items(): #因为hash类型的获取到之后是一个字典,所以这里循环字典
target_redis.hset(key,k,v) #key是外面的大key,k是里面的小k,v就是小k对应的value
 封装一个函数,操作Redis(get或者set数据):
def op_redis(host,password,k,v=None,port=6300,db=0):#db不指定,默认就是第一个db
r = redis.Redis(host=host,password=password,port=port,db=db)
if v:#传了v,是set操作
r.set(k,v)
res = 'ok'
else:#没有传v,是get操作
res = r.get(k)
if res: #这里是判断有没有get到数据
res = res.decode()
else:
res = None
return res
 




转载于:https://www.cnblogs.com/hoby2017/p/8391918.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值