zoukankan      html  css  js  c++  java
  • Python【操作Redis数据库】

    Redis非关系型数据库,数据存放在计算机内存中,无SQL语句。
    Redis中有多种数据类型,比较常用的数据类型是string类型和hash类型。
    平时我们使用RedisDesktopManager来对Redis中的数据进行可视化管理

    import redis

    r = redis.Redis(host='127.0.0.1',password='HK139bc&*',db=14,port=6379)

    print("============redis string类型=============")
    #1、新增
    r.set("zhangsan","张三爱打游戏!")
    r.set("lisi","李四爱打游戏!")
    r.set("wangwu","王五爱打游戏!")

    #2、修改
    r.set("zhangsan","张三的爷爷是红军战士!")
    r.set("lisi","李四的爷爷是红军战士!")
    r.set("wangwu","王五的爷爷是红军战士!")

    #3
    # 数据不存在时,创建新key,同时设置key的失效时间,时间是秒
    #数据存在时,修改key,同时设置key的失效时间,时间是秒
    #r.setex("sunhonglei","孙红雷的爷爷是红军战士",100)
    r.expire("sunhonglei",300)

    #4、查询
    val = r.get("sunhonglei")
    if val:
    print(val.decode())

    #获取key,keys()返回的是一个二进制格式的数据,需要decode()解码才能识别
    print("匹配【任意字符开头,s结尾】的key:",r.keys('*s'))
    print("匹配【s开头,任意字符结尾】的key:",r.keys('s*'))
    print("返回包含【s】的key:",r.keys("*s*"))
    print("返回所有key:",r.keys("*"))
    print("返回所有key:",r.keys())

    #get()返回的是一个二进制格式的数据,需要decode()解码才能识别
    r.set('天蝎座:fsy','湖南人')
    print(r.get("天蝎座:fsy").decode())

    #5、删除
    # r.delete("zhangsan")
    # r.delete("lisi",'wangwu')
    #删除所有的key
    # for k in r.keys():
    # r.delete(k)

    print("========redis hash类型=========")
    #新增
    r.hset('stu_info','甜甜姐','真漂亮')
    r.hset('stu_info','春天','百花齐放')
    r.hset('stu_info','夏天','太热了,狗儿猫儿热的不停地吐舌头')

    #修改
    r.hset('stu_info','甜甜姐','真漂亮,年轻就是美')
    r.hset('stu_info','春天','百花齐放,色彩斑斓')
    r.hset('stu_info','夏天','太热了,狗儿猫儿热的不停地吐舌头,娃娃们往地里跑,抱回一个个的大西瓜,啃个不停')

    #查询
    print("指定大key和小key获取对应的数据:",r.hget('stu_info','甜甜姐').decode())
    #获取所有的key和value:
    my_dic = r.hgetall("stu_info")
    for k,v in my_dic.items():
    print(k.decode(),v.decode())

    new_stu_info = {}
    for k,v in my_dic.items():
    new_stu_info[k.decode()] = v.decode()
    print(new_stu_info)

    #查看key是什么类型的
    print(r.type('stu_info'))

    #删除
    # print("删除指定key:",r.hdel('stu_info','春天'))
    # print("删除整个key",r.delete('stu_info'))
    r.expire("stu_info",120)


    print("===========redis hash练习代码===========")
    #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='127.0.0.1',password='HK139bc&*',db=13,port=6379)
    conn = pymysql.connect(host='127.0.0.1',user='jxz',passwd='123456',db='jxz',charset='utf8')
    cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cur.execute('select * from my_user limit 5;')
    all_data = cur.fetchall()
    print(all_data)
    for data in all_data:
    k = data.get('username')
    r.hset('stu_info',k,json.dumps(data))
    r.expire("stu_info",300)
    cur.close()
    conn.close()




  • 相关阅读:
    Spring总结(一)
    Java中NumberUtil工具类(持续更新中)
    Java中DateUtil工具类(持续更新中)
    解决poi导出报4000最大样式错误:java.lang.IllegalStateException: The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook错误
    MySQL 5.7 zip 安装
    Java中String类方法
    Error creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in class path resource [applicationContext-common.xml]: Cannot resolve reference to bean 'sqlSessionFactory'
    Ajax中async与cache参数
    打印类对象自动调用toString方法
    JSP基本语法小结
  • 原文地址:https://www.cnblogs.com/mtszw/p/9021922.html
Copyright © 2011-2022 走看看