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

Redis避不开的五种数据布局

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

我们看上图执行的呼吁知道,hset 呼吁也是有返回值的。假如 hset 呼吁配置乐成,则返回 1,不然返回 0。除此之外 Redis 也为哈希范例提供了 hsetnx 呼吁。在前文对字符串的先容中,我们知道 nx 呼吁只有当 key 不存在的时辰,才气配置乐成,同样的,hsetnx 呼吁在 field 不存在的时辰,才气配置乐成。

2.获取值

hget key field

Redis避不开的五种数据布局 

我们看 hget 呼吁和 get 有很大的差异,get 呼吁在获取的时辰,只要写一个名字就可以了,而 hget 呼吁则要写两个名字,第一个名字是 key,第二个名字是 field。虽然 key 可能 field 不存在时,返回的功效都是 nil。

3.删除 field

hdel key field [field ...]

Redis避不开的五种数据布局 

hdel 呼吁删除的时辰,也会有返回值,而且这个返回就是乐成删除 field 的个数。当 field 不存在时,并不会报错,而是直接返回 0。

4.计较 field 个数

hlen key

Redis避不开的五种数据布局 

hlen 呼吁返回的就是当前 key 中 field 的个数,假如 key 不存在,则返回 0。

5.批量配置或获取 field-value

hmget key field [field ...]

hmset key field value [field value ...]

Redis避不开的五种数据布局 

hmset 呼吁和 hmget 呼吁别离是批量配置和获取值的,hmset 呼吁没有什么要留意的,但 hmget 呼吁要出格留意,当我们获取一个不存在的 key 可能不存在的 field 时,Redis 并不会报错,而是返回 nil。而且有几个 field 不存在,则 Redis 返回几个 nil。

6.判定 field 是否存在

hexists key field

Redis避不开的五种数据布局 

当执行 hexists 呼吁时,假如当前 key 包罗 field,则返回 1,不然返回 0。

7.获取全部 field

hkeys key

Redis避不开的五种数据布局 

8.获取全部 value

hvals key

Redis避不开的五种数据布局 

9.获取全部的 field-value

hgetall key

Redis避不开的五种数据布局 

hgetall 呼吁会返回当前 key 中的全部 field-value,并凭证次序依次返回。

10.计数

hincrby key field increment

hincrbyfloat key field increment

Redis避不开的五种数据布局 

hincrby 呼吁和 incrby 呼吁的行使成果根基一样,都是对值举办增量操纵的,独一差异的就是 incrby 呼吁的浸染域是 key,而 hincrby 呼吁的浸染域则是 field。

11.计较 value 的字符串长度

hstrlen key field

Redis避不开的五种数据布局 

hstrlen 呼吁返回的是当前 key 中 field 中字符串的长度,假如当前 key 中没有 field 则返回 0。

时刻伟大度

内部编码

Redis 哈希范例的内部编码有两种,它们别离是:

  • ziplist(压缩列表):当哈希范例中元素个数小于 hash-max-ziplist-entries 设置(默认 512 个),同时全部值都小于 hash-max-ziplist-value 设置(默认 64 字节)时,Redis 会行使 ziplist 作为哈希的内部实现。
  • hashtable(哈希表):当上述前提不满意时,Redis 则会回收 hashtable 作为哈希的内部实现。

下面我们通过以下呼吁来演示一下 ziplist 和 hashtable 这两种内部编码。

当 field 个数较量少而且 value 也不是很大时辰 Redis 哈希范例的内部编码为 ziplist:

Redis避不开的五种数据布局 

当 value 中的字节数大于 64 字节时(可以通过 hash-max-ziplist-value 配置),内部编码会由 ziplist 酿成 hashtable。

Redis避不开的五种数据布局 

当 field 个数高出 512(可以通过 hash-max-ziplist-entries 参数配置),内部编码也会由 ziplist 酿成 hashtable。

(编辑:湖南网)

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

热点阅读