Redis避不开的五种数据结构
假如行使 blpop 和 brpop 呼吁指定多个键时,blpop 和 brpop 呼吁会从左到右遍历键,而且一旦有一个键能返回元素,则客户端会当即返回。 ![]() 当列表为空时,上述呼吁会阻塞,假如向上述中的任何一个键中插入元素,则上述呼吁会直接返回该键的元素。 假如多个客户端都对统一个键执行 blpop 可能 brpop 呼吁,则最先执行该呼吁的客户端会获取到该键的元素。 ![]() 我同时启动了 3 个客户端,由于当火线表为空,以是上述呼吁执行后会阻塞。假云云时我向该列表中插入元素,则只有第一个客户端会有返回功效,由于第一个客户端是第一个执行上述呼吁的。 ![]() ![]() 时刻伟大度 下面我们看一下列表中呼吁的相干时刻伟大度。 内部编码 列表中的内部编码有两种,它们别离是:
荟萃范例Redis 中的荟萃范例,也就是 set。在 Redis 中 set 也是可以生涯多个字符串的,常常有人会分不清 list 与 set,下面我们重点先容一下它们之间的差异:
呼吁 下面我们先容一下 set 中的相干呼吁。 1.荟萃内操纵 添加元素 sadd key member [member ...] ![]() sadd 呼吁也是有返回值的,它的返回值就是当前执行 sadd 呼吁乐成添加元素的个数,由于 set 中不能生涯一再元素,以是在执行 sadd setkey c d 呼吁时,返回的是 1,而不是 2。由于元素 c 已经乐成生涯到 set 中,不能再生涯了,只能将 d 生涯到 set 中。 删除元素 srem key member [member ...] ![]() srem 呼吁和 sadd 呼吁一样也是有返回值的,返回值就是当前删除元素的个数。 计较元素个数 scard key ![]() scard 呼吁的时刻伟大度为O(1),scard 呼吁不会遍历 set 中的全部元素,而是直接行使 Redis 中的内部变量。 判读元素是否在荟萃中 sismember key member ![]() sismember 呼吁也有返回值,假如返回值为1则暗示当前元素在当前 set 中,假如返回 0 则暗示当前元素不在 set 中。 随机从 set 中返回指定个数元素 srandmember key [count] ![]() (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |