Redis总结

本文详细介绍了Redis相关知识。Redis存储键值对数据,键为字符串,值有字符串、哈希、列表、集合、有序集合五种类型。还阐述了操作不同类型数据的命令,包括设置、获取、运算等。此外,讲解了Redis发布订阅机制,涉及消息格式和相关命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis数据类型

  • Redis存储的是key-value类型的数据,每个数据都是一个键值对
  1. 键的类型是字符串
  2. 值的类型分为五种:
    1. 字符串string
    2. 哈希hash
    3. 列表list
    4. 集合set
    5. 有序集合zset

Redis命令

操作string的命令

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

设置命令

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

获取命令

  1. 根据键获取值,若键不存在则返回nil
    GET key
    
  2. 根据多个键获取多个值
    MGET key [key ...]
    

运算命令

运算命令要求所操作的值是数字

  1. 将key对应的value加1
    INCR key
    
  2. 将key对应的value加整数increment
    INCRBY key increment
    
  3. 将key对应的value减1
    DECR key
    
  4. 将key对应的value减整数
    DECRBY key decrement
    

其它命令

  1. 追加值
    APPEND key value
    
  2. 获取值长度
    STRLEN key
    

操作键的命令

  1. 查找键,参数支持正则
    KEYS pattern
    
  2. 判断键是否存在,如果存在返回1,不存在返回0
    EXISTS key [key ...]
    
  3. 查看键对应的value的类型
    TYPE key
    
  4. 删除键及对应的值
    DEL key [key ...]
    
  5. 设置过期时间,以秒为单位
    EXPIRE key seconds
    
  6. 查看有效时间,以秒为单位
    TTL key
    

操作hash的命令

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

设置命令

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

获取命令

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

其它命令

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

操作list的命令

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

设置命令

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

获取命令

  1. 弹出key对应的list的第一个元素
    LPOP key
    
  2. 弹出key对应的list的最后一个元素
    RPOP key
    
  3. 返回存储在key列表里指定范围内的元素
  • start 和 end 偏移量都是基于0的下标
  • 偏移量也可以是负数,如-1表示列表的最后一个元素
    LRANGE key start stop
    

其它命令

  1. 裁剪列表,将列表裁剪成原集合的一个子集
  • startend为偏移量,下标从零开始
  • 偏移量也可以是负数,如-1表示列表的最后一个元素
    LTRIM key start stop
    
  1. 返回存储在 key 里的list的长度
    LLEN key
    
  2. 返回列表里索引对应的元素
    LINDEX key index
    

操作set的命令

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

设置命令

  1. 添加元素
    SADD key member [member ...]
    
  2. 获取key集合所有的元素
    SMEMBERS key
    
  3. 返回集合元素个数
    SCARD key
    

其它命令

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

Redis发布订阅

发布者订阅者

  • 发布者不是计划发送消息给特定的订阅者,而是将发布的消息分到不同的频道,不需要知道什么样的订阅者订阅.
  • 订阅者对一个或多个频道感兴趣,只需接收感兴趣的频道,不需要知道发布者的信息
  • 发布者订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑

推送消息的格式

推送消息的格式包含三部分:

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

命令

  1. 订阅
    SUBSCRIBE 频道名称 [频道名称 ...]
    
  2. 取消订阅: 如果不写参数,表示取消所有订阅
    UNSUBSCRIBE 频道名称 [频道名称 ...]
    
  3. 发布
    PUBLISH 频道 消息
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值