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

浅谈Redis中的全局命令

发布时间:2019-09-25 07:19:38 所属栏目:编程 来源:吉林乌拉
导读:在上一篇中我们已经先容过了Redis有5种数据范例,但每一种数据范例底层的实现都是差异的,在进修Redis时,我们除了要把握这5种数据范破例,还要相识它们详细的底层实现,这有助于我们更好的把握Redis的,在碰着题目时,可以利便快速的办理题目,在这篇,我
副问题[/!--empirenews.page--]

在上一篇中我们已经先容过了Redis有5种数据范例,但每一种数据范例底层的实现都是差异的,在进修Redis时,我们除了要把握这5种数据范破例,还要相识它们详细的底层实现,这有助于我们更好的把握Redis的,在碰着题目时,可以利便快速的办理题目,在这篇,我们首要相识全局呼吁、数据布局及内部编码等方面的常识。

浅谈Redis中的全局呼吁

  • 全局呼吁
  • Redis有5种数据布局,固然它们底层差异,但照旧有一些通用的呼吁是沟通的。

1.查察全部键(返回全部的键,并它详细的键输出出来)

  1. keys * 
Redis中的全局呼吁

2.查察键总数(返回当前数据库中的键的个数)

  1. dbsize 
Redis中的全局呼吁

备注:dbsize呼吁在计较键总数时不会遍历全部的键,而是直接获Redis内置的键总数变量,以是dbsize呼吁的时刻伟大度是O(1)。而keys呼吁则会遍历全部键,以是它的时刻伟大度是O(n),以是假如Redis中生涯了大量的键时,keys呼吁要慎用。

3.搜查键是否存在

  1. exists key 
Redis中的全局呼吁

我们看exists呼吁是有返回值的当键存在时则返回值为1,虽然键不存时返回值则为0。

4.删除键

  1. del key 
Redis中的全局呼吁
Redis中的全局呼吁

我们知道在Redis中有5种数据布局,但del呼吁可以直接删除恣意范例的数据布局,而不消担忧它底层的实现。

我们看del呼吁和exists呼吁一样,都是有返回值的。只不外差异的是del呼吁返回的时乐成删除键的个数。假如返回的是0,声名该键没有被乐成删除,也就声名该键不存在。假如返回的是大于0的数,是暗示多个键被删除了。下面我们看一下删除多个键的操纵。

5.键逾期

  1. expire key seconds 
Redis中的全局呼吁

Redis支持对键添加逾期时刻,当高出这个逾期时刻时,Redis会自动将键删除。

当我们通过expire呼吁配置键的逾期时刻后,我们可以行使

  1. ttl key 

呼吁查察该键的剩余逾期时刻,以是ttl呼吁是有返回值的,也就是该键的剩余时刻,单元是秒。除此之外,ttl呼吁有3种范例的返回值。下面我们看一下这3种返回值的区别。

  1. >=0:暗示剩余的逾期时刻 
  2. -1:键没配置逾期时刻 
  3. -2:键不存在 

6.键的数据布局范例

  1. type key 

Redis中的全局呼吁

假如键是字符串则type呼吁返回的就是字符串,假如是其余的数据范例则会返回其余的数据范例(由于我们还没有进修其余的范例,这里暂且只思量字符串),假如键不存在时,在返回none。

  • 数据布局和内部编码

上面我们知道type呼吁会返回Redis中键的数据范例,也就是string(字符串)、hash(哈希)、list(列表)、set(荟萃)、zset(有序荟萃)等。但这些只是对外的数据布局,现实上在Redis的内部差异的数据布局有差异的底层的内部编码。差异内部编码在Redis中有些差异的机能,而且在Redis中会自动判定应该用哪种编码来存储数据,已担保Redis的机能。我们可以通过下面的呼吁来查察键的内部编码。

  1. object encoding key 
Redis中的全局呼吁
Redis中的全局呼吁

我们可以看出,上面生涯的jilinwula这个键的内部编码就是embstr。下面我们看一下在Redis中全部的数据布局所对应的内部编码。

下面我们说明一下,为什么Redis要这样计划数据布局及底层编码呢。起首第一个甜头就是可以改造内部编码。当这样做时,而不必要改变内部的数据布局,也就无需修改外部布局及呼吁了。第二个甜头就是,我们知道差异的内部编码有着差异的机能,当这样计划时,假如我们要改变底层的内部编码时,我们只必要按照Redis设置选项就可以,将我们曾经存储过的key的底层编码变动,这样就可以针对差异的营业场景,本性化设置,进而晋升机能。

  • 单线程架构

我们知道Redis行使了单线程架构和I/O多路复用模子来实现高机能的内存处事。

  • 单线程模子

每当客户端挪用呼吁时城市经验3个步调:发送呼吁、执行呼吁、返回功效3个进程。我们之前先容过Redis是单线程的,以是每一条呼吁从客户端发送随处事端,呼吁不会当即执行,而是将全部的呼吁城市进入一个行列中,然后在次序执行。这样,当我们客户端启动多个时执行呼吁时,不消思量并发的题目,由于它们城市进入行列,次序执行。

  1. 为什么单线程处理赏罚速率这么快 第一,我们知道Redis是将数据都存储到内存中的,内存的处理赏罚速率,要比纯硬盘IO的速率要快的多。
  2. 第二,非阻塞I/O,Redis行使epoll作为I/O多路复用技能实现的,在加上Redis自身的变乱处理赏罚模子将epoll中的毗连、读写、封锁都转换为变乱,不在收集I/O上挥霍过多的时刻。
  3. 单线程停止线程切换等耗损

(编辑:河北网)

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

热点阅读