zoukankan      html  css  js  c++  java
  • 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
     




  • 相关阅读:
    [转发]深入理解git,从研究git目录开始
    iOS系统网络抓包方法
    charles抓包工具
    iOS多线程中performSelector: 和dispatch_time的不同
    IOS Core Animation Advanced Techniques的学习笔记(五)
    IOS Core Animation Advanced Techniques的学习笔记(四)
    IOS Core Animation Advanced Techniques的学习笔记(三)
    IOS Core Animation Advanced Techniques的学习笔记(二)
    IOS Core Animation Advanced Techniques的学习笔记(一)
    VirtualBox复制CentOS后提示Device eth0 does not seem to be present的解决方法
  • 原文地址:https://www.cnblogs.com/hoby2017/p/8391918.html
Copyright © 2011-2022 走看看