zoukankan      html  css  js  c++  java
  • Python学习笔记(十九)—redis的操作

    Redis是一个非关系型数据库,它没有数据表、没有SQL语句;数据值的存储是以K-V的形式来存储的。我们可以使用redis图形化工具来操作redis也可以使用Python来对其进行操作。

    一、使用工具操作redis

    1、安装RedisDesktopManager这个软件

      软件的安装不在介绍,直接傻瓜式安装即可

    2、安装完成后打开后如下图界面,点击connect

    3、配置完成后再左边框,你可以看到自己配置的数据库连接,点击进入数据库,显示该下面可以操作的库,默认在db0库里面

    4、选择db1库右击,给出坦克,选择Add new key 可以添加一个数据

     

     5、添加内容的删除

    注意:上图右上角的TTL值代表的是这个数据在内存中存在的时间,如果等于-1表示永久生效,如果为其它则表示在固定的时间内生效(单位秒)

    6、添加内容的修改,也是如上图,在value上直接修改,修改完成后点击保存即可。

    7、在创建的Test_Redis上右击,选择console进入DOS页面也可以直接操作

    Test_Redis:0>select 1  切换当前的库

    Test_Redis:1>set age 19  给当前的库添加数据

    Test_Redis:1>get age   获取当前key为age的value值

    Test_Redis:1>set python:test 123  在当前库里面添加一个名为Python的文件,文件下边有名称为:Python:test,value值为123的一条数据

     二、使用Python操作redis

    针对string类型的数据的操作

    1、添加、修改数据

    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcdef'
    r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379
    r.set('sex','')  #添加数据
    r.set('sec','女') #修改数据
    r.set('name','这是一个测试!',60) #新增和修改数据k-v-失效时间,默认-1,永远生效;60代表一分钟内生效;

    2、读取数据

    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcdef'
    r = redis.Redis(host=ip,password=password,db=1) #连接redis,,默认值port=6379
    res = r.get('sex').decode()  #获取key=sex的value值;且获取的结果是一个二进制类型的数据,所以需要decode转成字符串类型的数据
    print(res)  
    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcdef'
    r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379
    res = r.get('sex') #获取key=sex的value值;且获取的结果是一个二进制类型的数据,所以需要decode转成字符串类型的数据
    print(res)  

    注意:如果连接数据库的时候加入了参数decode_responses=True,那么在读取数据的时候就不需要在进行转码操作

    3、删除数据

    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcdef'
    r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379
    r.delete('sex1') #删除key=sex1的value值

    4、删除所有的数据

    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcdef'
    r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379
    r.flushdb() #删除这个数据库里所有的key

    5、其它操作

    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcdef'
    r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379
    r.set('java:test','JAVA-language') #在数据库中添加了一个名词为JAVA的文件夹,文件夹下有数据key:java:test,value:JAVA-language
    print(r.keys())  #获取所有key
    print(r.keys('*a*'))  #获取所有key中包括a字母的key
    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcdef'
    r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379
    #读取所有数据库中key的值
    key_list = []
    for i in r.keys():
        key_list.append(r.get(i))
        print('key:%s,value:%s'%(i,r.get(i)))
    print(key_list)

    针对哈希类型的数据的操作

     hash类型的数据实际上就是一个二层嵌套的字典,如下:

    session = {
    "name":{'sex':18,'age':19},
    "add":{'sex':20,'age':21}
    }

    1、增加、修改数据

    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcde'
    r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379
    r.hset('syz_stus','test','21345')  #存储hash类型的数据的是格式:K-k-v,如上面的格式 ,添加hash类型数据
    r.hset('syz_stus','test','哈哈哈')  #数据hash类型数据值

    2、读取数据

    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcde'
    r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379
    res = r.hget('syz_stus','test')  #获取某一个小key的值
    res1 = r.hgetall('syz_stus') #以字典的格式获取到大K里面所有的数据,格式是二进制类型
    print(res,res1)

    3、删除数据

    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcde'
    r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379
    r.hdel('syz_stus','test') #删除指定的小K的数据
    r.delete('syz_stus') #删除整个大K的所有数据

    4、循环操作获取所有hash类型数据的值

    import redis  #导入模块
    ip = '1.1.1.1'
    password = 'abcde'
    r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379
    res = r.hgetall('syz_stus')  #以字典的格式获取到大K里面所有的数据,格式是二进制类型
    print(res)
    new = {}
    for k,v in res.items():
        new[k] = v
    print('============')
    print(new)
  • 相关阅读:
    【Aizu
    【Aizu
    【OpenJ_Bailian
    leetcode-225-Implement Stack using Queues
    leetcode-219-Contains Duplicate II(使用set来判断长度为k+1的闭区间中有没有重复元素)
    leetcode-217-Contains Duplicate(使用排序来判断整个数组有没有重复元素)
    leetcode-840-Magic Squares In Grid
    leetcode-198-House Robber(动态规划)
    leetcode-191-Number of 1 Bits
    leetcode-189-Rotate Array
  • 原文地址:https://www.cnblogs.com/beginner-boy/p/12567217.html
Copyright © 2011-2022 走看看