zoukankan      html  css  js  c++  java
  • Redis 指令 学习笔记

    Redis

    什么是Redis

    redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,还提供了多个语言的API,操作比较方便

    安装redis

        sudo apt-get update
        sudo apt-get install redis-server
    

    关系型数据库和非关系数据库的区别

    关系型数据库表和表之间存在的关系非关系型数据库不存在表的这种概念,redis是键值对数据库,通过key查找value 所以key是唯一的

    查看已安装redis信息

        
    ps ajx|grep redis
    

      

    操作Redis

    对于操作redis有两种,一种是直接redis-cli ,还有一种就是使用编程语言 例pythonjava等等

    以下操作都在Linux系统中操作

    redis-cli原生操作redis

    • 启动

      redis-cli 

    Redis的基本数据类型

    • string 字符串

    • list 列表

    • hash 哈希

    • set 集合

    • sorted sets 有序集合(zset) 

    官方学习网站

    操作String

      最大能存储512MB数据

    • 设置

      set key value

      set name which

      不能用同一个 key不然就会覆盖 默认设置的过期时间是永久

        • 获取

          get key

          get name
        • 设置键值及过期时间,以秒为单位
        • setex key seconds value
    expire key seconds

    expire name 20

    ```
    • key不存在

    ```
    set key value ex seconds

    setex key seconds value

    ```
    • 查看过期时间


      ttl key
      例:
      ttl name
    • 追加


      append key value

      append name love
    • 设置多个


      mset key value key value..
      例子
      mset username which password 123
    • 获取多个


      mget key key key ...

      mget username password name
    key
    • 删除


      del key

      del name
    • 查看所有的key

      keys *
    • 查看key是否存在

      exists key 
    • 查看key类型

      type key
    • 设置过期时间,以秒为单位,创建时没有设置过期时间则一直存在
    • expire key seconds
      
    • 查看有效时间,以秒为单位
    • TTL key
    运算
    • incr key
    • decr key
    • 整数


      incrby key increment

    • 整数
      decrby key increment

    操作list

    • 设置

      • lpush
    左添加
    ```
    lpush key value
    
    ```
    • rpush
    右添加
    ```
    rpush key value
    
    ```
    • 在一个元素的前|后插入新元素
    LINSERT key BEFORE|AFTER pivot value

    • 在一个元素的前|后插入新元素
    LINSERT key BEFORE|AFTER pivot value
    • 查看

      lrange key start stop
      例 查看所有
      lrange key 0 -1
    • 获得

      list

      的元素个数

      llen key 
    • 查看位于index位置上的元素

      lindex key  index
    • 删除

      • lpop
    删除左边第一个
    ```
    lpop key
    
    ```
    • rpop
    删除右边第一个
    ```
    rpop key
    
    ```
    • lrem
    删除指定
    ```
    lrem key count value
    
    ```
    
    - `count > 0` 从左往右 删除数量为`count`的`value`
    - `count = 0` 删除所有的 `value`
    - `count < 0` 从右往左 删除数量为`count`的`value`

    操作hash

    • 设置

      hset key field value
      例
      hset user username  which
    • 获取

      hget key field
      例
      hget user username
    • 删除

      hdel key field
      例
      hdel user username
    • 设置多个

      hmset key field value [field value]
    • 获取多个

      hmget key field field
    • 获取全部

      field value
      hgetall key 
      
    • 获取所有的

      field
      hkeys key
    • 获取所有的

      value
      hvals key 
    • 获取

      field

      的个数

      hlen key
    • 其它

      • 判断属性是否存在
      HEXISTS key field
      
      • 删除属性及值
      HDEL key field [field ...]
      
      • 返回值的字符串长度
      HSTRLEN key field

    操作set

    • 设置

      sadd key value [value]
    • 获取

      smembers key
    • 删除

      • srem

        指定删除

        srem key member
      • spop

        随机删除

        spop  key
    • 移动一个集合的值到另一个集合

      smove oldkey newkey member
    • 判断集合存在某个值

      sismember key value
    • 交集

      sinter key1 key2 ..

      把 key1 key2的交集合并到

      newkey
      sinterstore newkey key1 key2
    • 并集

      sunion key1 key2 ...

      把 key1 key2的并集合并到

      newkey
      sunionstore newkey key1 key2
    • 差集

      sdiff key1 key2

      把 key1 key2的差集合并到

      newkey
      sdiffstore newkey key1 key2
      
    • 获取集合个数

      scard key
    • 随机返回一个

      srandmember key

    操作zset

    • 设置

      zadd key score member
    • 获取

      • zrange
    正序
    ```
    zrange key start stop
    
    ```
    • zrevrange
    倒序
    ```
    zrevrange key start stop
    
    ```
    • 删除

      zrem key member
    • 索引

      • zrank
    正序
    ```
    zrank key member
    
    ``
    • zrevrank
    反序
    ```
    zrevrank key member
    
    ```
    • 查看有序集合元素数

      zcard key
    • 返回值在min-max之间的

      zcount key min max
      
    • 查看score

      zscore key member

    发布订阅

    • 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅
    • 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的
    • 发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑
    • 客户端发到频道的消息,将会被推送到所有订阅此频道的客户端
    • 客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来

    消息的格式

    • 推送消息的格式包含三部分
    • part1:消息类型,包含三种类型
      • subscribe,表示订阅成功
      • unsubscribe,表示取消订阅成功
      • message,表示其它终端发布消息
    • 如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量
    • 如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道,当在Pub/Sub以外状态,客户端可以发出任何redis命令
    • 如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容

    命令

    • 订阅
    SUBSCRIBE 频道名称 [频道名称 ...]
    
    • 取消订阅
    • 如果不写参数,表示取消所有订阅
    UNSUBSCRIBE 频道名称 [频道名称 ...]
    
    • 发布
    PUBLISH 频道 消息

    主从配置

    • 一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
    • 比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器
    • 设置主服务器的配置
    bind 192.168.1.10
    
    • 设置从服务器的配置
    • 注意:在slaveof后面写主机ip,再写端口,而且端口必须写
    bind 192.168.1.11
    slaveof 192.168.1.10 6379
    
    • 在master和slave分别执行info命令,查看输出信息
    • 在master上写数据
    set hello world
    
    • 在slave上读数据
    get hello

    设置密码

    找到配置文件下的requirepass foobared 修改之后重启服务

    redis配置文件路径:etc/redis/redis.conf

    Python操作Redis

    先安装一个第三方库redis

        pip install redis

    连接

    导入:

    import redis
    re = redis.Redis(host="IP地址", port=6379, db=0,password='密码’)

    出现以下提示说明需要输入密码:

    
    
    
  • 相关阅读:
    量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第九章画线】
    量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第八章色彩】
    量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第七章数学函数】
    量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第六章函数】
    量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第五章数组】
    量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第四章跳跃字和保留字】
    常用简体汉字
    mongodb json序列化时间格式
    awk 改名
    ssh 免密码登录linux
  • 原文地址:https://www.cnblogs.com/wendj/p/redis.html
Copyright © 2011-2022 走看看