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

详解Redis基

发布时间:2018-11-13 17:03:59 所属栏目:编程 来源:kelgon
导读:本文将从Redis的根基特征入手,通过报告Redis的数据布局和首要呼吁对Redis的根基手段举办直观先容。之后概览Redis提供的高级手段,并在陈设、维护、机能调优等多个方面举办更深入的先容和指导。 本文得当行使Redis的平凡开拓职员,以及对Redis举办选型、架

上述几个呼吁涉及的计较劲大,应审慎行使,出格是在参加计较的Set尺寸不行知的环境下,应严酷停止行使。可以思量通过SSCAN呼吁遍历获取相干Set的所有member(详细请见 https://redis.io/commands/scan ),假如必要做并集/交集/差集计较,可以在客户端举办,或在不处事及时查询哀求的Slave长举办。

Sorted Set

Redis Sorted Set是有序的、不行一再的String荟萃。Sorted Set中的每个元素都必要指派一个分数(score),Sorted Set会按照score对元素举办升序排序。假如多个member拥有沟通的score,则以字典序举办升序排序。

Sorted Set很是适实用于实现排名。

Sorted Set的首要呼吁:

  • ZADD:向指定Sorted Set中添加1个或多个member,时刻伟大度O(Mlog(N)),M为添加的member数目,N为Sorted Set中的member数目
  • ZREM:从指定Sorted Set中删除1个或多个member,时刻伟大度O(Mlog(N)),M为删除的member数目,N为Sorted Set中的member数目
  • ZCOUNT:返回指定Sorted Set中指定score范畴内的member数目,时刻伟大度:O(log(N))
  • ZCARD:返回指定Sorted Set中的member数目,时刻伟大度O(1)
  • ZSCORE:返回指定Sorted Set中指定member的score,时刻伟大度O(1)
  • ZRANK/ZREVRANK:返回指定member在Sorted Set中的排名,ZRANK返回按升序排序的排名,ZREVRANK则返回按降序排序的排名。时刻伟大度O(log(N))
  • ZINCRBY:同INCRBY,对指定Sorted Set中的指定member的score举办自增,时刻伟大度O(log(N))

慎用的Sorted Set相干呼吁:

  • ZRANGE/ZREVRANGE:返回指定Sorted Set中指定排名范畴内的全部member,ZRANGE为按score升序排序,ZREVRANGE为按score降序排序,时刻伟大度O(log(N)+M),M为本次返回的member数
  • ZRANGEBYSCORE/ZREVRANGEBYSCORE:返回指定Sorted Set中指定score范畴内的全部member,返回功效以升序/降序排序,min和max可以指定为-inf和+inf,代表返回全部的member。时刻伟大度O(log(N)+M)
  • ZREMRANGEBYRANK/ZREMRANGEBYSCORE:移除Sorted Set中指定排名范畴/指定score范畴内的全部member。时刻伟大度O(log(N)+M)

上述几个呼吁,应只管停止转达[0 -1]或[-inf +inf]这样的参数,来对Sorted Set做一次性的完备遍历,出格是在Sorted Set的尺寸不行预知的环境下。可以通过ZSCAN呼吁来举办游标式的遍历(详细请见 https://redis.io/commands/scan ),或通过LIMIT参数来限定返回member的数目(合用于ZRANGEBYSCORE和ZREVRANGEBYSCORE呼吁),以实现游标式的遍历。

Bitmap和HyperLogLog

Redis的这两种数据布局相较之前的并不常用,在本文中只做扼要先容,如想要具体相识这两种数据布局与其相干的呼吁,请参考官方文档中的相干章节

Bitmap在Redis中不是一种现实的数据范例,而是一种将String作为Bitmap行使的要领。可以领略为将String转换为bit数组。行使Bitmap来存储true/false范例的简朴数据极为节减空间。

HyperLogLogs是一种首要用于数目统计的数据布局,它和Set相同,维护一个不行一再的String荟萃,可是HyperLogLogs并不维护详细的member内容,只维护member的个数。也就是说,HyperLogLogs只能用于计较一个荟萃中不一再的元素数目,以是它比Set要节减许多内存空间。

其他常用呼吁

  • EXISTS:判定指定的key是否存在,返回1代表存在,0代表不存在,时刻伟大度O(1)
  • DEL:删除指定的key及其对应的value,时刻伟大度O(N),N为删除的key数目
  • EXPIRE/PEXPIRE:为一个key配置有用期,单元为秒或毫秒,时刻伟大度O(1)
  • TTL/PTTL:返回一个key剩余的有用时刻,单元为秒或毫秒,时刻伟大度O(1)
  • RENAME/RENAMENX:将key重定名为newkey。行使RENAME时,假如newkey已经存在,其值会被包围;行使RENAMENX时,假如newkey已经存在,则不会举办任何操纵,时刻伟大度O(1)
  • TYPE:返回指定key的范例,string, list, set, zset, hash。时刻伟大度O(1)
  • CONFIG GET:得到Redis某设置项的当前值,可以行使*通配符,时刻伟大度O(1)
  • CONFIG SET:为Redis某个设置项配置新值,时刻伟大度O(1)
  • CONFIG REWRITE:让Redis从头加载redis.conf中的设置

数据耐久化

Redis提供了将数据按期自动耐久化至硬盘的手段,包罗RDB和AOF两种方案,两种方案别离有其优点和短板,可以共同起来同时运行,确保数据的不变性。

必需行使数据耐久化吗?

Redis的数据耐久化机制是可以封锁的。假如你只把Redis作为缓存处事行使,Redis中存储的全部数据都不是该数据的主体而仅仅是同步过来的备份,那么可以封锁Redis的数据耐久化机制。

但凡是来说,如故提议至少开启RDB方法的数据耐久化,由于:

  • RDB方法的耐久化险些不消费Redis自己的机能,在举办RDB耐久化时,Redis主历程独一必要做的工作就是fork出一个子历程,全部耐久化事变都由子历程完成
  • Redis无论由于什么缘故起因crash掉之后,重启时可以或许自动规复到上一次RDB快照中记录的数据。这省去了手工从其他数据源(如DB)同步数据的进程,并且要比其他任何的数据规复方法都要快
  • 此刻硬盘那么大,真的不缺那一点处所

RDB

回收RDB耐久方法,Redis会按期生涯数据快照至一个rbd文件中,并在启动时自动加载rdb文件,规复之前世存的数据。可以在设置文件中设置Redis举办快照生涯的机缘:

  1. save [seconds] [changes] 

意为在[seconds]秒内假如产生了[changes]次数据修改,则举办一次RDB快照生涯,譬喻:

  1. save 60 100 

会让Redis每60秒搜查一次数据改观环境,假如产生了100次或以上的数据改观,则举办RDB快照生涯。

可以设置多条save指令,让Redis执行多级的快照生涯计策。

(编辑:湖南网)

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

热点阅读