• Redis-数据操作


    数据操作

    • redis是key-value的数据,所以每个数据都是一个键值对
    • 键的类型是字符串
    • 值的类型分为五种:

      • 字符串string
      • 哈希hash
      • 列表list
      • 集合set
      • 有序集合zset
    • 数据操作的全部命令,可以查看中文网站

    • 接下来逐个介绍操作各类型的命令

    string

    • string是redis最基本的类型
    • 最大能存储512MB数据
    • string类型是二进制安全的,即可以为任何数据,比如数字、图片、序列化对象等

    命令

    设置

    • 设置键值
    set key value
    
    • 设置键值及过期时间,以秒为单位
    SETEX key seconds value
    
    • 设置多个键值
    MSET key value [key value ...]
    

    获取

    • 根据键获取值,如果不存在此键则返回nil
    GET key
    
    • 根据多个键获取多个值
    MGET key [key ...]
    

    运算

    • 要求:值是数字
    • 将key对应的value加1
    INCR key
    
    • 将key对应的value加整数
    INCRBY key increment
    
    • 将key对应的value减1
    DECR key
    
    • 将key对应的value减整数
    DECRBY key decrement
    

    其它

    • 追加值
    APPEND key value
    
    • 获取值长度
    STRLEN key


    键的命令

    • 查找键,参数支持正则
    KEYS pattern
    
    • 判断键是否存在,如果存在返回1,不存在返回0
    EXISTS key [key ...]
    
    • 查看键对应的value的类型
    TYPE key
    
    • 删除键及对应的值
    DEL key [key ...]
    
    • 设置过期时间,以秒为单位
    • 创建时没有设置过期时间则一直存在,直到使用使用DEL移除
    EXPIRE key seconds
    
    • 查看有效时间,以秒为单位
    TTL key


    hash

    • hash用于存储对象,对象的格式为键值对

    命令

    设置

    • 设置单个属性
    HSET key field value
    
    • 设置多个属性
    HMSET key field value [field value ...]
    

    获取

    • 获取一个属性的值
    HGET key field
    
    • 获取多个属性的值
    HMGET key field [field ...]
    
    • 获取所有属性和值
    HGETALL key
    
    • 获取所有的属性
    HKEYS key
    
    • 返回包含属性的个数
    HLEN key
    
    • 获取所有值
    HVALS key
    

    其它

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


    list

    • 列表的元素类型为string
    • 按照插入顺序排序
    • 在列表的头部或者尾部添加元素

    命令

    设置

    • 在头部插入数据
    LPUSH key value [value ...]
    
    • 在尾部插入数据
    RPUSH key value [value ...]
    
    • 在一个元素的前|后插入新元素
    LINSERT key BEFORE|AFTER pivot value
    
    • 设置指定索引的元素值
    • 索引是基于0的下标
    • 索引可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
    LSET key index value
    

    获取

    • 移除并且返回 key 对应的 list 的第一个元素
    LPOP key
    
    • 移除并返回存于 key 的 list 的最后一个元素
    RPOP key
    
    • 返回存储在 key 的列表里指定范围内的元素
    • start 和 end 偏移量都是基于0的下标
    • 偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
    LRANGE key start stop
    

    其它

    • 裁剪列表,改为原集合的一个子集
    • start 和 end 偏移量都是基于0的下标
    • 偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
    LTRIM key start stop
    
    • 返回存储在 key 里的list的长度
    LLEN key
    
    • 返回列表里索引对应的元素
    LINDEX key index


    set

    • 无序集合
    • 元素为string类型
    • 元素具有唯一性,不重复

    命令

    设置

    • 添加元素
    SADD key member [member ...]
    

    获取

    • 返回key集合所有的元素
    SMEMBERS key
    
    • 返回集合元素个数
    SCARD key
    

    其它

    • 求多个集合的交集
    SINTER key [key ...]
    
    • 求某集合与其它集合的差集
    SDIFF key [key ...]
    
    • 求多个集合的合集
    SUNION key [key ...]
    
    • 判断元素是否在集合中
    SISMEMBER key member


    zset

    • sorted set,有序集合
    • 元素为string类型
    • 元素具有唯一性,不重复
    • 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
    • 元素的score可以相同

    命令

    设置

    • 添加
    ZADD key score member [score member ...]
    

    获取

    • 返回指定范围内的元素
    ZRANGE key start stop
    
    • 返回元素个数
    ZCARD key
    
    • 返回有序集key中,score值在min和max之间的成员
    ZCOUNT key min max
    
    • 返回有序集key中,成员member的score值
    ZSCORE key member


    发布订阅

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

    消息的格式

    • 推送消息的格式包含三部分
    • part1:消息类型,包含三种类型如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量
      • subscribe,表示订阅成功
      • unsubscribe,表示取消订阅成功
      • message,表示其它终端发布消息
    • 如果第一部分的值为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


  • 相关阅读:
    oracle 索引分区处于不可用状态怎么解决 规格严格
    去IOE 遇到Jdbc mysql sql_mode的坑[转载] 规格严格
    【java】高并发之限流 RateLimiter使用 规格严格
    信息泄露引发的资产失陷与检测分析 规格严格
    一种失陷设备识别与设备失陷度评估的方法、装置 规格严格
    加快ios的出包速度
    为游戏接入ios sdk的oc学习笔记
    缩小ios的包体
    python2排序
    Sentinel 控制台
  • 原文地址:https://www.cnblogs.com/askDing/p/8645416.html
Copyright © 2020-2023  润新知