Redis 数据类型及常用操作命令介绍

Redis不是简单的键值存储数据库,它实际上是一个支持不同类型值的数据结构服务器。Redis支持的数据类型包括:String字符串、List列表、Set集合、ZSet有序集合、Hash哈希、BitMaps位图、HyperLogLogs、Streams

1. String字符串

  • string是Redis最基本的数据类型,一个key对应一个value
  • value可以是每种类型的字符串,其大小不能大于512MB

1.1 设置和获取字符串的值

其中,如果键对应的值已经设置了,再次调用set命令会将原来的value覆盖

在单条命令设置和获取字符串的值可使用mset和mget命令

1.2 原子增量

若字符串的值为一个整数,则可以使用incr命令对value进行递增操作,该操作具有原子性,类似的命令还有incrby(value增加指定的值)、decr(递减)、decrby(value减少指定的值)

1.3 删除键和关联的值

2. List列表

  • Redis的列表是通过链表实现的,所以在list的开头或结尾添加新元素的操作复杂度为O(1),但访问元素的复杂度为O(N)
  • 常用于消息队列,生产者将消息推入列表,消费者从列表中取出消息并执行操作

2.1 添加元素

lpush命令将一个新元素添加到列表的左侧(头部),类似的命令有rpush(在列表的右侧即尾部添加元素),两个命令都是可变参数命令。当目标键不存在时,会在添加元素之前先创建一个空的列表。其中可通过lrange从列表中提取元素。

2.2 删除元素

lpop命令将列表左侧(头部)的元素弹出并返回,类似的命令有rpop(弹出并返回列表右侧即尾部的元素)。当删除元素后列表为空时,该键将自动销毁

2.3 修剪列表

ltrim命令可以将索引范围外的元素删除

2.4 无元素弹出时阻塞

Redis的列表可用作消息队列,但当列表为空时,消费者调用pop命令时会返回空,此时需要隔一段时间再次执行pop命令重试,即轮询,这样会强制Redis和客户端执行处理无用的命令,也会增加延迟,因此可以使用brpop命令,当列表为空时,阻塞消费者,直到有生产者将元素添加至列表时,将元素弹出返回。将timeout设置为0时将无限等待

3. Hash哈希

哈希是一个键值对集合,可放入哈希表的字段数没有实际限制(可用内存除外)

3.1 设置和获取

还可通过hmset、hmget设置和获取多个键值对

4. Set集合

set是Redis的无序集合,不允许有重复的元素

4.1 添加元素

4.2 弹出元素

4.3 返回所有元素

因为set是无序集合,调用smembers时会以任意顺序返回元素

4.4 检查元素是否存在

5. ZSet有序集合

  • zset与set类似,但是zset是有序的,其中的每一个元素都与一个称为得分的浮点值相关联,根据该值对zset进行排序
  • 排序规则:若score不等,则若A.score > B.score,则A > B;若score相等,则比较A和B的字符串,因为集合不能有重复元素,所以A和B的字符串不会相等
  • 底层实现为压缩列表和跳跃表
  • 常用场景有排行榜,或者用于做有权重的队列

5.1 添加元素

5.2 返回元素

此时返回的元素已排序,类似的命令有zrevrange,可逆序返回元素

还可返回范围内的元素

6. BitMaps位图

  • bitmaps不是实际的数据类型,而是在string类型上定义的一组面向位的操作
  • bitmaps最大的优点是在存储信息时,可以节省大量的空间
  • 常用于各种实时分析

6.1 设置和获取

6.2 计数

7. HyperLogLog

用于对事物进行计数。通常,因为需要记住过去的值,以免重复计数,所需的内存与项目数量成正比。在Redis中可以通过hyperloglog使用恒定数量的内存,对项目进行计数,但会存在一定的误差,误差小于1%

7.1 设置和计数

8 Stream流

stream是5.0引入的新数据类型,支持多播的可持久化的消息队列,用于实现发布订阅功能,借鉴了 kafka 的设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值