Redis 五大基本类型详解

1.Redis String 字符串

Redis Strings存储字节序列,包括文本、序列化对象和二进制数组。因此,字符串是最基本的 Redis 数据类型。它们通常用于缓存,但它们支持额外的功能,也可以实现计数器并执行按位操作。
限制:Redis字符串最大为512MB

基本使用

  • set key value - 存储一个字符串值 - 例如:SET mykey “Hello” - 注意set操作会替换已经存在的健的值
  • setnx key value - 仅当键不存在时才储存值,通常用于实现锁
  • get key - 用于检索字符值 - 例如:GET mykey,将返回"Hello"。
  • append key value - 在现有键值的末尾追加字符串。- 例如,键mykey的值为"Hello",执行append mykey " World"后,mykey的值变为"Hello World"。
  • mget key1 key2 … - 单次操作中检索多个字符值,返回以字符串列表
  • incr/decr - 对存储的整数值进行原子性的自增和自减操作。例如,SET counter 5,然后INCR counter会使counter的值变为 6,DECR counter会使它变为 4。
  • incrby/decrby step - 对存储数字的字符串键进行按指定步长自增/自减操作。与incr/decr类似但可以指定步长

set中使用 set key value nx 则只有键不存在时才写入
而 set key value xx 则表示只有键存在时写入

2.Redis List 列表

Redis的List是一个字符串链表,通常被用于实现堆和栈,以及为后端服务实现消息队列。

基本操作

  • lpush/rpush lkey v1 二 - 将值添加到列表的表头/表尾
  • lpop/rpop lkey - 从列表的表头/表尾移除一个值并返回
  • brpop/plpop key time - 阻塞列表,当列表为空时阻塞,直到列表中有新的数据插入或者超过实效会返回
  • llen lkey - 返回列表的长度
  • LMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT>- 将一个列表中的元素移动到另一个列表(6.2.0版本以上你可以使用,以下可以使用pop push替代实现)
  • lrange lkey first end - 从列表中获取指定范围的数据
  • ltrim - 将列表缩减到指定的元素范围
  • linsert key BEFORE|AFTER pivot value - 在指令列表的指定元素前/后插入值

特点

Redis的List是基于链表实现的,这就意味着他可以在O(1)的时间下对数据进行插入和获取,但同时也意味着在需要通过下标访问的情况下其效率久较为低下,如果需要频繁使用下标访问可以使用redis提供的另外一个类型Sorted set。
Redis会自动创建与删除空列表。

应用

Redis列表的常用场景:

  • 拥有保存用户最新常上传的信息
  • 用于不同进程之间的通信,例如实现 消费者-生产者 模型
  • 限制列表,通过ltrim和lpush可以实现列表中只存在最新上传的n和数据
  • 阻塞列表,通过brpop.blpop实现阻列表,当列表中没有数据时阻塞请求,等有数据输入或者请求过期时返回

3. Redis Set 集合

Redis set是一个无序的不重复的元素集合。

基本用法

  • sadd sname value - 向集合添加元素
  • spop sname - 随机删除一个元素
  • srem sname key - 移除指定元素
  • sismember sname key - 查看元素是否在集合中
  • smismember sname key1 key2 - 查看多个元素是否在集合中
  • scard - 返回集合长度
  • srandmember - 随机选取集合元素,并不删除
  • smembers - 查看集合所有元素
  • sdiff set1 set2 - 差集
  • sinter set1 set2 - 交集
  • sunion set1 set2 - 并集
  • sscan key cursor [MATCH pattern] [COUNT count] - cursor:

sscan参数
key:要进行迭代扫描的集合键名。
cursor:游标,它是一个整数值,用于标识迭代的位置。第一次调用sscan时,cursor应该设置为 0。
MATCH pattern(可选):用于指定一个模式,只有匹配该模式的元素才会被返回。这个模式遵循与KEYS命令中相同的通配符规则,例如*表示任意字符序列,?表示单个任意字符。
COUNT count(可选):用于指定每次迭代要返回的元素数量的上限,但实际返回的元素数量可能小于这个值。

特点

大部分操作例如sadd,srem操作的时间开销时O(1)
当集合元素巨大时应当谨慎使用smember因为他的时间开销是O(n),并且会一次返回所有元素,最好的方法是使用sscan使用迭代的方式获取。

4. Redis Hashes 哈希

Redis哈希是由字段值对组成的记录类型。可以使用散列来表示基本对象和存储计数器分组等。
限制:哈希最多可以创建4,294,967,295个键值对

基本用法

  • hset key k1 v1 k2 v2… - 设置值
  • hget key k1 k2 … - 获取值
  • hgetall - 获取所有key
  • hvals key - 获取指定哈希所有值
  • hsetnx key k1 v1 k2 v2 … - 设置值时若存在则不添加
  • hmget key - 以列表的形式返回所有值
  • hincrby/hdescby - 以制定的步长自增自减
  • hexpire - 设置剩余生命周期(ttl)单位为秒
  • hpexpire - 设置剩余生命周期(ttl)单位为分
  • hexpireat - 将过期事件设置为以秒为单位的时间戳
  • hpexpireat - 将过期事件设置为以毫秒为单位的时间戳
  • hexpiretime - 获取以秒为单位的过期时间戳
  • hpexpietime- 获取以毫秒秒为单位的过期时间戳
  • hpersist - 删除过期时间

应用场景

  • 事件追踪 - 使用hashkey记录过去时间发生的时间,并将事件的生命周期设置为一小时,便可记录过去一小时发生的事件
  • 会话管理 - 为每个会话创建过期时间,当到期时取消授权或更新签证

5.Redis Sorted Set

Redis排序集是由一个相关分数排序的唯一字符串(成员)的集合。当多个字符串具有相同的分数时,这些字符串按字典顺序排序。

基本用法

  • zadd setname m1 v1 m2 v2. - 向有序集合中插入值和对应的分数
  • zrange setname start end - 根据索引返回值
  • zrangebyscore setname start end - 按照分数从小到大获取指定分数范围内的元素
  • zrevrangebyscore setname start end - 按照分数从大到小获取指定分数范围内的元素
  • zranke setname m - 按照分数从小到大获取元素的排名
  • zrevranke setname m - 按照分数从大到小获取元素的排名
  • zscore key member - 获取元素在有序列表中的值
  • zincrby/zdescby key increment member - 将有序列表中的成员值增加/减少指定值
  • zrem key m1 m2 - 删除有序列表中的指定成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值