Redis避不开的五种数据布局
我们看上图执行的呼吁知道,hset 呼吁也是有返回值的。假如 hset 呼吁配置乐成,则返回 1,不然返回 0。除此之外 Redis 也为哈希范例提供了 hsetnx 呼吁。在前文对字符串的先容中,我们知道 nx 呼吁只有当 key 不存在的时辰,才气配置乐成,同样的,hsetnx 呼吁在 field 不存在的时辰,才气配置乐成。 2.获取值 hget key field ![]() 我们看 hget 呼吁和 get 有很大的差异,get 呼吁在获取的时辰,只要写一个名字就可以了,而 hget 呼吁则要写两个名字,第一个名字是 key,第二个名字是 field。虽然 key 可能 field 不存在时,返回的功效都是 nil。 3.删除 field hdel key field [field ...] ![]() hdel 呼吁删除的时辰,也会有返回值,而且这个返回就是乐成删除 field 的个数。当 field 不存在时,并不会报错,而是直接返回 0。 4.计较 field 个数 hlen key ![]() hlen 呼吁返回的就是当前 key 中 field 的个数,假如 key 不存在,则返回 0。 5.批量配置或获取 field-value hmget key field [field ...] hmset key field value [field value ...] ![]() hmset 呼吁和 hmget 呼吁别离是批量配置和获取值的,hmset 呼吁没有什么要留意的,但 hmget 呼吁要出格留意,当我们获取一个不存在的 key 可能不存在的 field 时,Redis 并不会报错,而是返回 nil。而且有几个 field 不存在,则 Redis 返回几个 nil。 6.判定 field 是否存在 hexists key field ![]() 当执行 hexists 呼吁时,假如当前 key 包罗 field,则返回 1,不然返回 0。 7.获取全部 field hkeys key ![]() 8.获取全部 value hvals key ![]() 9.获取全部的 field-value hgetall key ![]() hgetall 呼吁会返回当前 key 中的全部 field-value,并凭证次序依次返回。 10.计数 hincrby key field increment hincrbyfloat key field increment ![]() hincrby 呼吁和 incrby 呼吁的行使成果根基一样,都是对值举办增量操纵的,独一差异的就是 incrby 呼吁的浸染域是 key,而 hincrby 呼吁的浸染域则是 field。 11.计较 value 的字符串长度 hstrlen key field ![]() hstrlen 呼吁返回的是当前 key 中 field 中字符串的长度,假如当前 key 中没有 field 则返回 0。 时刻伟大度 内部编码 Redis 哈希范例的内部编码有两种,它们别离是:
下面我们通过以下呼吁来演示一下 ziplist 和 hashtable 这两种内部编码。 当 field 个数较量少而且 value 也不是很大时辰 Redis 哈希范例的内部编码为 ziplist: ![]() 当 value 中的字节数大于 64 字节时(可以通过 hash-max-ziplist-value 配置),内部编码会由 ziplist 酿成 hashtable。 ![]() 当 field 个数高出 512(可以通过 hash-max-ziplist-entries 参数配置),内部编码也会由 ziplist 酿成 hashtable。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |