加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Redis避不开的五种数据结构

发布时间:2018-10-29 15:00:59 所属栏目:编程 来源:编辑部的故事
导读:Redis 中有 5 种数据布局,别离是字符串(String)、哈希(Hash)、列表(List)、荟萃(Set)和有序荟萃(Sorted Set),由于行使 Redis 场景的开拓中必定是无法避开这些基本布局的,以是纯熟把握它们也就成了一项必不行少的手段。本文章精腹地先容了 Redis 的这几

假如行使 blpop 和 brpop 呼吁指定多个键时,blpop 和 brpop 呼吁会从左到右遍历键,而且一旦有一个键能返回元素,则客户端会当即返回。

Redis避不开的五种数据布局

当列表为空时,上述呼吁会阻塞,假如向上述中的任何一个键中插入元素,则上述呼吁会直接返回该键的元素。

假如多个客户端都对统一个键执行 blpop 可能 brpop 呼吁,则最先执行该呼吁的客户端会获取到该键的元素。

Redis避不开的五种数据布局

我同时启动了 3 个客户端,由于当火线表为空,以是上述呼吁执行后会阻塞。假云云时我向该列表中插入元素,则只有第一个客户端会有返回功效,由于第一个客户端是第一个执行上述呼吁的。

Redis避不开的五种数据布局
Redis避不开的五种数据布局

时刻伟大度

下面我们看一下列表中呼吁的相干时刻伟大度。

内部编码

列表中的内部编码有两种,它们别离是:

  • ziplist(压缩列表):当列表中元素个数小于 512(默认)个,而且列表中每个元素的值都小于 64(默认)个字节时,Redis 会选择用 ziplist 来作为列表的内部实现以镌汰内存的行使。虽然上述默认值也可以通过相干参数修改:list-max-ziplist-entried(元素个数)、list-max-ziplist-value(元素值)。
  • linkedlist(链表):当列表范例无法满意 ziplist 前提时,Redis 会选择用 linkedlist 作为列表的内部实现。

荟萃范例

Redis 中的荟萃范例,也就是 set。在 Redis 中 set 也是可以生涯多个字符串的,常常有人会分不清 list 与 set,下面我们重点先容一下它们之间的差异:

  • set 中的元素是不行以一再的,而 list 是可以生涯一再元素的。
  • set 中的元素是无序的,而 list 中的元素是有序的。
  • set 中的元素不能通过索引下标获取元素,而 list 中的元素则可以通过索引下标获取元素。
  • 除此之外 set 还支持更高级的成果,譬喻多个 set 取交集、并集、差集等。

呼吁

下面我们先容一下 set 中的相干呼吁。

1.荟萃内操纵

添加元素

sadd key member [member ...]

Redis避不开的五种数据布局

sadd 呼吁也是有返回值的,它的返回值就是当前执行 sadd 呼吁乐成添加元素的个数,由于 set 中不能生涯一再元素,以是在执行 sadd setkey c d 呼吁时,返回的是 1,而不是 2。由于元素 c 已经乐成生涯到 set 中,不能再生涯了,只能将 d 生涯到 set 中。

删除元素

srem key member [member ...]

Redis避不开的五种数据布局

srem 呼吁和 sadd 呼吁一样也是有返回值的,返回值就是当前删除元素的个数。

计较元素个数

scard key

Redis避不开的五种数据布局

scard 呼吁的时刻伟大度为O(1),scard 呼吁不会遍历 set 中的全部元素,而是直接行使 Redis 中的内部变量。

判读元素是否在荟萃中

sismember key member

Redis避不开的五种数据布局

sismember 呼吁也有返回值,假如返回值为1则暗示当前元素在当前 set 中,假如返回 0 则暗示当前元素不在 set 中。

随机从 set 中返回指定个数元素

srandmember key [count]

Redis避不开的五种数据布局

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读