浅谈Redis中的全局命令
副问题[/!--empirenews.page--]
在上一篇中我们已经先容过了Redis有5种数据范例,但每一种数据范例底层的实现都是差异的,在进修Redis时,我们除了要把握这5种数据范破例,还要相识它们详细的底层实现,这有助于我们更好的把握Redis的,在碰着题目时,可以利便快速的办理题目,在这篇,我们首要相识全局呼吁、数据布局及内部编码等方面的常识。
1.查察全部键(返回全部的键,并它详细的键输出出来)
2.查察键总数(返回当前数据库中的键的个数)
备注:dbsize呼吁在计较键总数时不会遍历全部的键,而是直接获Redis内置的键总数变量,以是dbsize呼吁的时刻伟大度是O(1)。而keys呼吁则会遍历全部键,以是它的时刻伟大度是O(n),以是假如Redis中生涯了大量的键时,keys呼吁要慎用。 3.搜查键是否存在
我们看exists呼吁是有返回值的当键存在时则返回值为1,虽然键不存时返回值则为0。 4.删除键
我们知道在Redis中有5种数据布局,但del呼吁可以直接删除恣意范例的数据布局,而不消担忧它底层的实现。 我们看del呼吁和exists呼吁一样,都是有返回值的。只不外差异的是del呼吁返回的时乐成删除键的个数。假如返回的是0,声名该键没有被乐成删除,也就声名该键不存在。假如返回的是大于0的数,是暗示多个键被删除了。下面我们看一下删除多个键的操纵。 5.键逾期
Redis支持对键添加逾期时刻,当高出这个逾期时刻时,Redis会自动将键删除。 当我们通过expire呼吁配置键的逾期时刻后,我们可以行使
呼吁查察该键的剩余逾期时刻,以是ttl呼吁是有返回值的,也就是该键的剩余时刻,单元是秒。除此之外,ttl呼吁有3种范例的返回值。下面我们看一下这3种返回值的区别。
6.键的数据布局范例
假如键是字符串则type呼吁返回的就是字符串,假如是其余的数据范例则会返回其余的数据范例(由于我们还没有进修其余的范例,这里暂且只思量字符串),假如键不存在时,在返回none。
上面我们知道type呼吁会返回Redis中键的数据范例,也就是string(字符串)、hash(哈希)、list(列表)、set(荟萃)、zset(有序荟萃)等。但这些只是对外的数据布局,现实上在Redis的内部差异的数据布局有差异的底层的内部编码。差异内部编码在Redis中有些差异的机能,而且在Redis中会自动判定应该用哪种编码来存储数据,已担保Redis的机能。我们可以通过下面的呼吁来查察键的内部编码。
我们可以看出,上面生涯的jilinwula这个键的内部编码就是embstr。下面我们看一下在Redis中全部的数据布局所对应的内部编码。 下面我们说明一下,为什么Redis要这样计划数据布局及底层编码呢。起首第一个甜头就是可以改造内部编码。当这样做时,而不必要改变内部的数据布局,也就无需修改外部布局及呼吁了。第二个甜头就是,我们知道差异的内部编码有着差异的机能,当这样计划时,假如我们要改变底层的内部编码时,我们只必要按照Redis设置选项就可以,将我们曾经存储过的key的底层编码变动,这样就可以针对差异的营业场景,本性化设置,进而晋升机能。
我们知道Redis行使了单线程架构和I/O多路复用模子来实现高机能的内存处事。
每当客户端挪用呼吁时城市经验3个步调:发送呼吁、执行呼吁、返回功效3个进程。我们之前先容过Redis是单线程的,以是每一条呼吁从客户端发送随处事端,呼吁不会当即执行,而是将全部的呼吁城市进入一个行列中,然后在次序执行。这样,当我们客户端启动多个时执行呼吁时,不消思量并发的题目,由于它们城市进入行列,次序执行。
(编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |