• 操作Redis--hash/key-value


    redis也是一个数据库,它的存储以key-value的方式存放,比如:
    
    

    a.关系型数据库

    比如:
       mysql、oracle、sql server、db2、sqlite数据库,为关系型数据库
    数据通过sql语句查询操作
       数据以表的形式存放
    数据存在磁盘上
    b.非关系型数据库 比如redis,mongodb
    没有表结构
    没有查询语句,不需要sql查询
    获取数据直接使用:get('k')
    添加数据使用:set('xx')
    redis数据全部都是存在内存里面。因此其操作速度要比关系型数据库快
    redis本身性能是非常好的,每秒支持30w次的读写。

    首先定义一个数据库:
    r = redis.Redis(host='118.24.3.XX',password='abc*&js',db=1,port=6379)
    1.往数据库里添加一个key有两种方式:
      r.set('fancy','today is friday')
      或者直接在数据库名称处右键,选择“add new key”
    2.修改key同添加,使用set
    3.删除key,r.delete('fancy')
    4.设置key的失效时间,最后这个参数是秒,r.setex('fancy','哈哈哈',20)
    补充:
    s='呵呵'
    s.encode() #把字符串转成二进制
    hwt = b'sdsdfdjkj'
    hwt.decode() #把bytes类型转成字符串
    5.获取所有的key:
    hwt = r.get('hwt')
    # print(hwt.decode())
     print(r.keys()) #获取到所有的key
    print(r.keys(nn**)) #获取以nn开头的key
    6.在key下添加文件夹:
     r.set('双鱼座:fancy','hello') #冒号前为文件夹的名称,若含有多个文件夹时,使用冒号连接,例如:r.set('双鱼座:fancy1:fancy2:fancy3',’hello')
    如图:

    7.获取文件夹下value:  print(r.get('双鱼座:fancy'))      结果:b'hello'

    8.删除所有的key:

      for k in r.keys():

        r.delete(k)

    以上所有操作是针对redis中的string类型。

    下面介绍:哈希类型  hash
    1.r.hset('stu_info','fancy','200,我们都要好好的')

       2. 查看Key是什么类型的:print(r.type(stu_info))

       3.取key:print(r.hget('stu_info','张流量').decode())  #指定大key和小key获取对应的数据,返回值为byte类型

      print(r.hgetall('stu_info')) #获取里面所有的k和-v,返回一个字典,值为byte类型

        如图:

     将上面二进制字典转化成十进制,

     #stu_info  = r.hgetall('stu_info')
    # new_stu_info = {}
    # for k,v in stu_info.items():
    #  new_stu_info[k.decode()] = v.decode()
    # print(new_stu_info)

       4.删除指定的key:

      stu_info = r.hgetall('stu_info')

      r.hdel('stu_info','gyx') #删除指定key

      r.delete('stu_info') #删除整个key

     5.设置key的失效时间:

      r.expire('aaa',100)   #第一个key设置失效时间

    随堂小练习:
    #分析:
    #1、连数据库,查到数据库里面所有的数据,游标类型要用pymysql.curosrs.DictCour
    #2、查到所有数据 [{"id":1,"passwd":"49487dd4f94008a6110275e48ad09448","username":"niuhayang","is_admin":1}]
    #3、循环这个list,取到usernamer,把username当做key
    #4、再把这个小字典转成json,存进去就ok。
    import pymysql,json,redis
    r = redis.Redis(host='118.24.3.xx',password='xxyybbc&*',db=1,port=6379)
    conn = pymysql.connect(host='118.24.3.xx',user='jxzs',passwd='123456',db='jxzs',charset='utf8')
    cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cur.execute('select * from my_user;')
    all_data = cur.fetchall()
    for data in all_data:
        k = data.get('username')
        r.hset('stu_info_nhy',k,json.dumps(data))
    cur.close()
    conn.close()
    View Code
     
     

    转载于:https://www.cnblogs.com/fancyl/p/9009882.html

  • 相关阅读:
    XAML学习笔记之Layout(五)——ViewBox
    XAML学习笔记——Layout(三)
    XAML学习笔记——Layout(二)
    XAML学习笔记——Layout(一)
    从0开始搭建SQL Server 2012 AlwaysOn 第三篇(安装数据,配置AlwaysOn)
    从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)
    从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)
    Sql Server 2012 事务复制遇到的问题及解决方式
    Sql Server 2008R2升级 Sql Server 2012 问题
    第一次ACM
  • 原文地址:https://www.cnblogs.com/twodog/p/12136947.html
Copyright © 2020-2023  润新知