Redis避不开的五种数据布局
副问题[/!--empirenews.page--]
Redis 中有 5 种数据布局,别离是字符串(String)、哈希(Hash)、列表(List)、荟萃(Set)和有序荟萃(Sorted Set),由于行使 Redis 场景的开拓中必定是无法避开这些基本布局的,以是纯熟把握它们也就成了一项必不行少的手段。本文章精腹地先容了 Redis 的这几种数据布局,首要包围了它们各自的界说、根基用法与相干要点。 字符串范例字符串是 Redis 中的最基本的数据布局,我们生涯到 Redis 中的 key,也就是键,就是字符串布局的。除此之外,Redis 中其余数据布局也是在字符串的基本上计划的,可见字符串布局对付 Redis 是何等重要。 Redis 中的字符串布局可以生涯多种数据范例,如:简朴的字符串、JSON、XML、二进制等,但有一点要出格留意:在 Redis 中字符串范例的值最大只能生涯 512 MB。 ![]() 呼吁 下面通过呼吁相识一下对字符串范例的操纵: 1.配置值 set key value [EX seconds] [PX milliseconds] [NX|XX] ![]() set 呼吁有几个非必需的选项,下面我们看一下它们的详细声名: EX seconds:为键配置秒级逾期时刻 PX milliseconds:为键配置毫秒级逾期时刻 NX:键必需不存在,才可以配置乐成,用于添加 XX:键必需存在,才可以配置乐成,用于更新 ![]() set 呼吁带上可选参数 NX 和 XX 在现实开拓中的浸染与 setnx 和 setxx 呼吁沟通。我们知道 setnx 呼吁只有当 key 不存在的时辰才气配置乐成,换句话说,也就是统一个 key 在执行 setnx 呼吁时,只能乐成一次,而且因为 Redis 的单线程呼吁处理赏罚机制,纵然多个客户端同时执行 setnx 呼吁,也只有一个客户端执行乐成。以是,基于 setnx 这种特征,setnx 呼吁可以作为漫衍式锁的一种办理方案。 而 setxx 呼吁则可以在安详性较量高的场景中行使,由于 set 呼吁执行时,会执行包围的操纵,而 setxx 在更新 key 时可以确保该 key 已经存在了,所觉得了担保 key 中数据范例的正确性,可以行使 setxx 呼吁。 2.获取值 get key ![]() 3.批量配置值 mset key value ![]() 4.批量获取值 mget key ![]() 假若有些键不存在,那么它的值将为 nil,也就是空,而且返回功效的次序与传入时沟通。 ![]() 5.计数 incr key incr 呼吁用于对值做自增操纵,返回的功效分为 3 种环境:
![]() 除了有 incr 自增呼吁外,Redis 中还提供了其余对数字处理赏罚的呼吁。譬喻: decr key 自减 incrby kek increment 自增指定命字 decrby key decrement 自减指定命字 incrbyfloat key increment 自增浮点数 ![]() 6.追加值 append key value append 呼吁可以向字符串尾部追加值。 ![]() 7.字符串长度 strlen key ![]() 因为每此中文占用 3 个字节,以是 jilinwula 这个键,返回是字符串长度为 12,而不是 4。 8.配置并返回原值 getset key value ![]() 9.配置指定位置的字符 setrange key offeset value ![]() 10.获取部门字符串 getrange key start end ![]() 时刻伟大度 在 Redis 中执行任何呼吁时,都有响应的时刻伟大度,伟大度越高也就越费时刻,以是在执行 Redis 中的呼吁时,假如要执行的呼吁伟大度越高,就越要稳重。下面是字符串呼吁时刻伟大度范例表: 内部编码 在 Redis 中字符串范例的内部编码有 3 种:
![]() 哈希范例大部门说话根基都提供了哈希范例,如 Java 说话中的 Map 范例及 Python 说话中的字典范例等等。固然说话差异,但它们根基行使都是一样的,也就是都是键值对布局的。譬喻: value={{field1, value1} 通过下图可以直观感觉一下字符串范例和哈希范例的区别: ![]() Redis 中哈希范例都是键值对布局的,以是要出格留意这里的 value 并不是指 Redis 中 key 的 value,而是哈希范例中的 field 所对应的 value。 呼吁 下面我们照旧和先容字符串范例一样,相识一下 Redis 中哈希范例的相干呼吁。 1.配置值 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |