• Redis常用数据类型


    一、 基本概念

      Redis 是一个高性能的key-value数据库。
      NoSQL:一类新出现的数据库(not only sql);泛指非关系型的数据库,不支持SQL语法
    
    • 1
    • 2

    配置

    Redis的配置信息在/etc/redis/redis.conf下。

    查看

    sudo vi /etc/redis/redis.conf

    核心配置选项

    绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip
    bind 127.0.0.1
    端⼝,默认为6379
    port 6379
    数据⽂件 : dbfilename dump.rdb

    数据⽂件存储路径 : dir /var/lib/redis

    ⽇志⽂件 : logfile “/var/log/redis/redis-server.log”

    数据库,默认有16个 : database 16

    二、 连接启动方式

    1.启动redis服务器命令:

    配置文件名称 (可以不填,读取默认配置)

    redis-server 
    
    • 1

    2.连接redis客户端命令:

    redis-cli -h ip地址 -p 端口 -c:连接集群
    如:

    redis-cli -h 47.101.63.222 -p 56379
    
    • 1

    3. 连接本地:redis-cli

    4. 设置密码:config set requirepass pass_123456

    5. 获取密码:config get requirepass

    6. 登录:auth pass_123456

    7. 切换数据库:

     数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库
    
      select 10
    
    • 1
    • 2
    • 3

    三、 基本的数据格式和操作

    string类型:

    存值

    	设置值:set key value
            (设置键为name值为itcast的数据)
            set name itcast
     
        设置值,过期时长:setex key seconds value
            (设置键为aa值为aa过期时间为3秒的数据)
            setex aa 3 aa
     
        设置多个键值: mset key1 value1 key2 value2 ...
            (设置键为'a1'值为'python'、键为'a2'值为'java'、键为'a3'值为'c')
            mset a1 python a2 java a3 c
     
            
        追加值:append key value
            (向键为a1中追加值' haha')
             append 'a1' 'haha'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    获取值

        根据键获取值,如果不存在此键则返回nil --  get key
            (获取键'name'的值)
            get 'name'
     
        根据多个键获取多个值: mget key1 key2 ...
            (获取键a1、a2、a3'的值)
            mget a1 a2 a3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    键命令

        查找键,参数⽀持正则表达式;--  keys pattern
     
        1. 查看所有键     keys *
     
        2. 查看名称中包含 a 的键    keys 'a*'
     
        3. 判断键是否存在,如果存在返回1,不存在返回0  exists key1
     
        4. 查看键对应的value的类型  type key
     
        5. 删除键及对应的值  del key1 key2 ...
             (删除键a2、a3) -- del a2 a3
     
        6. 设置过期时间,以秒为单位,如果没有指定过期时间则⼀直存在,直到使⽤DEL移除
               expire key seconds
     
             (设置键'a1'的过期时间为3秒) -- expire 'a1' 3
     
        7. 查看有效时间,以秒为单位  ttl key
             (查看键'bb'的有效时间) --  ttl 'bb'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    hash类型

    ⽤于存储对象,对象的结构为属性、值; 值的类型为string

       1. 设置单个属性  hset key field value
            (设置键 user的属性name为itheima) -- hset user name itheima
    
       2. 设置多个属性  hmset key field1 value1 field2 value2 ...
            (设置键u2的属性name为itcast、属性age为11)
               hmset u2 name itcast age 11
    
       3. 获取指定键所有的属性  hkeys key
    
       4. 获取⼀个属性的值   hget key field
            (获取键u2属性'name'的值)
               hget u2 'name'
    
       5. 获取多个属性的值  hmget key field1 field2 ...
    
       6. 获取所有属性的值  hvals key
    
       7. 删除属性的值: hdel key field
            (删除键'u2'的属性'age')
             hdel u2 age
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    list类型:

    列表的元素类型为string

        1. 在左侧插⼊数据   lpush key value1 value2 ...
     
        2. 在右侧插⼊数据   rpush key value1 value2 ..
     
        3. 在指定元素的前或后插⼊新元素
             linsert key before或after 现有元素 新元素
     
        3. 查看:
             rpop 右边取出元素(取出后list元素个数减1)
             rpop key  (与 lpush 连用;形成队列操作)
              
             lpop: 左侧取出一个元素,取出后list元素个数减1
     
        4. 获取: 返回列表⾥指定范围内的元素
            lrange key start stop
     
                start、stop为元素的下标索引
                索引从左侧开始,第⼀个元素为0
                索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
     
             (获取键为'a1'的列表所有元素)
                lrange a1 0 -1
     
        5. 设置指定索引位置的元素值
            lset key index value
                索引从左侧开始,第⼀个元素为0
                索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素
     
               (修改键为'a1'的列表中下标为1的元素值为'z')
                 lset a1 1 z 
     
        6. 删除
           1) 删除指定元素  lrem key count value
                将列表中前count次出现的值为value的元素移除
                count > 0: 从头往尾移除
                count < 0: 从尾往头移除
                count = 0: 移除所有
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    set类型:

    属性:   ⽆序集合
            元素为string类型
            元素具有唯⼀性,不重复
            说明:对于集合没有修改操作
    
    • 1
    • 2
    • 3
    • 4
        1. 增加
        添加元素: sadd key member1 member2 
     
        2. 获取
        返回所有的元素: smembers key
     
        3. 删除
        删除指定元素: srem key
          (删除键'a3'的集合中元素'wangwu')
            srem a3 wangwu
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    zset类型(有序集合):

    属性:sorted set,有序集合
    	     元素为string类型
         元素具有唯⼀性,不重复
         每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
         说明:没有修改操作 
    
    • 1
    • 2
    • 3
    • 4
    • 5
       1. 增加
          添加元素: zadd key score1 member1 score2 member2
           (向键'a4'的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',权重分别为4、5、6、3)
            zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan
    
       2. 获取
          返回所有的元素: zrange key start stop  
           start、stop为元素的下标索引
           索引从左侧开始,第⼀个元素为0
           索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素 
    
       3. 删除
          删除指定元素: zrem key member1 member2 ...
    
          删除权重在指定范围的元素: zremrangebyscore key min max
           (删除集合'a4'中权限在5、6之间的元素)
            zremrangebyscore a4 5 6
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    四、安装方式:

        1. 联⽹安装包redis:  pip install redis
        2. 到中⽂官⽹-客户端下载redis包的源码,使⽤源码安装
    
    • 1
    • 2

    一步步执行 wget https://github.com/andymccurdy/redis-py/archive/master.zip
    unzip master.zip
    cd redis-py-master
    sudo python setup.py install

    五、.与python 交互

    1. 引入模块

        from redis import *
    
    • 1
    (这个模块中提供了StrictRedis对象(Strict严格),⽤于连接redis服务器,并按照不同类型提供 了不同⽅法,进⾏交互操作)
    
    • 1

    2. 连接 redis

    (通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认 为6379,db默认为0)

       sr = StrictRedis(host='localhost', port=6379, db=0)
       简写
       sr=StrictRedis()
    
    • 1
    • 2
    • 3

    3.string-增加

    ⽅法set,添加键、值,如果添加成功则返回True,如果添加失败则返回False

    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #添加键name,值为itheima
            result=sr.set('name','itheima')
            #输出响应结果,如果添加成功则返回True,否则返回False
            print(result)
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4.string-获取

    ⽅法get,添加键对应的值,如果键存在则返回对应的值,如果键不存在则返回None

    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #获取键name的值
            result = sr.get('name')
            #输出键的值,如果键不存在则返回None
            print(result)
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5.string-修改

    ⽅法set,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
    编写代码如下

    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
            result = sr.set('name','itcast')
            #输出响应结果,如果操作成功则返回True,否则返回False
            print(result)
        except Exception as e:
            print(e)
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    6.string-删除

    ⽅法delete,删除键及对应的值,如果删除成功则返回受影响的键数,否则则返 回0
    编写代码如下

    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
            result = sr.delete('name')
            #输出响应结果,如果删除成功则返回受影响的键数,否则则返回0
            print(result)
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    7.获取键

    ⽅法keys,根据正则表达式获取键
    编写代码如下

    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #获取所有的键
            result=sr.keys()
            #输出响应结果,所有的键构成⼀个列表,如果没有键则返回空列表
            print(result)
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    Pytorch从零开始实战03
    cubemx stm32 lu90614模块 人体温度检测模块 可以替代温枪 驱动代码
    SpringBoot3集成Kafka
    行业洞察 | 新零售业态下,品牌电商应如何重塑增长?
    An overview of IfM Engage
    cnpm安装步骤
    猿创征文 | kafka框架从入门到精通(全)
    信息学奥赛一本通:1172:求10000以内n的阶乘
    u盘资料不小心删掉怎么找回来?一文教会你恢复方法
    网康科技 NS-ASG 应用安全网关 SQL注入漏洞复现(CVE-2024-2022)
  • 原文地址:https://blog.csdn.net/weixin_48088839/article/details/132793172