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

Redis避不开的五种数据结构

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

Redis 中有 5 种数据布局,别离是字符串(String)、哈希(Hash)、列表(List)、荟萃(Set)和有序荟萃(Sorted Set),由于行使 Redis 场景的开拓中必定是无法避开这些基本布局的,以是纯熟把握它们也就成了一项必不行少的手段。本文章精腹地先容了 Redis 的这几种数据布局,首要包围了它们各自的界说、根基用法与相干要点。

字符串范例

字符串是 Redis 中的最基本的数据布局,我们生涯到 Redis 中的 key,也就是键,就是字符串布局的。除此之外,Redis 中其余数据布局也是在字符串的基本上计划的,可见字符串布局对付 Redis 是何等重要。

Redis 中的字符串布局可以生涯多种数据范例,如:简朴的字符串、JSON、XML、二进制等,但有一点要出格留意:在 Redis 中字符串范例的值最大只能生涯 512 MB。

Redis避不开的五种数据布局

呼吁

下面通过呼吁相识一下对字符串范例的操纵:

1.配置值

set key value [EX seconds] [PX milliseconds] [NX|XX]

Redis避不开的五种数据布局

set 呼吁有几个非必需的选项,下面我们看一下它们的详细声名:

EX seconds:为键配置秒级逾期时刻

PX milliseconds:为键配置毫秒级逾期时刻

NX:键必需不存在,才可以配置乐成,用于添加

XX:键必需存在,才可以配置乐成,用于更新

Redis避不开的五种数据布局

set 呼吁带上可选参数 NX 和 XX 在现实开拓中的浸染与 setnx 和 setxx 呼吁沟通。我们知道 setnx 呼吁只有当 key 不存在的时辰才气配置乐成,换句话说,也就是统一个 key 在执行 setnx 呼吁时,只能乐成一次,而且因为 Redis 的单线程呼吁处理赏罚机制,纵然多个客户端同时执行 setnx 呼吁,也只有一个客户端执行乐成。以是,基于 setnx 这种特征,setnx 呼吁可以作为漫衍式锁的一种办理方案。

而 setxx 呼吁则可以在安详性较量高的场景中行使,由于 set 呼吁执行时,会执行包围的操纵,而 setxx 在更新 key 时可以确保该 key 已经存在了,所觉得了担保 key 中数据范例的正确性,可以行使 setxx 呼吁。

2.获取值

get key

Redis避不开的五种数据布局

3.批量配置值

mset key value

Redis避不开的五种数据布局

4.批量获取值

mget key

Redis避不开的五种数据布局

假若有些键不存在,那么它的值将为 nil,也就是空,而且返回功效的次序与传入时沟通。

Redis避不开的五种数据布局

5.计数

incr key

incr 呼吁用于对值做自增操纵,返回的功效分为 3 种环境:

  • 假如值不是整数,那么返回的必然是错误
  • 假如值是整数,那么返回自增后的功效
  • 假如键不存在,那么就会建设此键,然后凭证值为 0 自增, 就是返回 1
Redis避不开的五种数据布局

除了有 incr 自增呼吁外,Redis 中还提供了其余对数字处理赏罚的呼吁。譬喻:

decr key 自减

incrby kek increment 自增指定命字

decrby key decrement 自减指定命字

incrbyfloat key increment 自增浮点数

Redis避不开的五种数据布局

6.追加值

append key value

append 呼吁可以向字符串尾部追加值。

Redis避不开的五种数据布局

7.字符串长度

strlen key

Redis避不开的五种数据布局

因为每此中文占用 3 个字节,以是 jilinwula 这个键,返回是字符串长度为 12,而不是 4。

8.配置并返回原值

getset key value

Redis避不开的五种数据布局

9.配置指定位置的字符

setrange key offeset value

Redis避不开的五种数据布局

10.获取部门字符串

getrange key start end

Redis避不开的五种数据布局

时刻伟大度

在 Redis 中执行任何呼吁时,都有响应的时刻伟大度,伟大度越高也就越费时刻,以是在执行 Redis 中的呼吁时,假如要执行的呼吁伟大度越高,就越要稳重。下面是字符串呼吁时刻伟大度范例表:

内部编码

在 Redis 中字符串范例的内部编码有 3 种:

  • int:8 个字节的长整型
  • embstr:小于便是 39 个字节的字符串
  • raw:大于 39 个字节的字符串
Redis避不开的五种数据布局 

哈希范例

大部门说话根基都提供了哈希范例,如 Java 说话中的 Map 范例及 Python 说话中的字典范例等等。固然说话差异,但它们根基行使都是一样的,也就是都是键值对布局的。譬喻:

value={{field1, value1}

通过下图可以直观感觉一下字符串范例和哈希范例的区别:

Redis避不开的五种数据布局 

Redis 中哈希范例都是键值对布局的,以是要出格留意这里的 value 并不是指 Redis 中 key 的 value,而是哈希范例中的 field 所对应的 value。

呼吁

下面我们照旧和先容字符串范例一样,相识一下 Redis 中哈希范例的相干呼吁。

1.配置值

(编辑:河北网)

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

热点阅读