redis高级特性

Redis 持久化方式有哪些?
redis是一个支持持久化的内存数据库,也就是redis经常将内存中的数据同步到硬盘来保证持久化

类型特点
rdb方式snapshotting (快照) 默认方式 将内存中数据以快照方式写入二进制文件中,默认dump.rdb ,append-only file(缩写 aof)的方式—推荐,由于快照方式在一定时间间隔做一次,有可能发生数据丢失情况,aof方式比快照有更好的持久化性,
aof方式AOF 特点,写一条redis然后写日志,好处保证数据不丢失,不好地方,数据规模超大时候,磁盘会有卡顿。

RDB 是默认持久化方案,最大好处,基于快照,备份简单,单个文件,不好地方,redis发生故障,可能会导致最后几秒数据丢失。
Redis 支持同时开启 RDB 和 AOF,系统重启后,Redis 会优先使用 AOF 来恢复数据,这样丢失的数据会最少,也可以全部关掉。持久化交给数据库
在这里插入图片描述
在架构设计中,有“分流”一招,说的是将处理快的请求和处理慢的请求分离来开 这些快的放在一个线程中搞定,而持久化,持久化、Master-slave同步数据这些耗时的操作就单开一个进程来处理,不要慢的影响到快的; 既然需要使用keys这些耗时的操作,那么我们就将它们剥离出去,比如单开一个redis slave结点,专门用于keys、sort等耗时的操作,这些查询一般不会是线上的实时业务,查询慢点就慢点,主要是能完成任务,而对于线上的耗时快的任务没有影响。
为什么单线程redis 还这么快?
(1) 绝大部分请求是纯粹的内存操作,非常快速
(2) 采用单线程,避免了不必要的上下文切换和竞争条件, 原子性保证关键
单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求,其他模块仍用了多个线程(例如持久化模块)
(3) 非阻塞IO - IO多路复用,这样提高了redis的吞吐量。“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗)
基于操作系统epoll实现的
(4) Redis的瓶颈最有可能是机器内存的大小或者网络带宽,还有些操作不当造成的堵塞
用于记录执行时间超过给定时间的命令请求,可以用来监视和优化查询速度

Redis堵塞问题和性能监控
(1) Redis的事件循环在一个线程中处理,作为一个单线程程序,重要的是要保证事件处理的时延短,这样,事件循环中的后续任务才不会阻塞; 当redis的数据量达到一定级别后(比如20G),很多操作对性能的影响尤为严重;
(2) 耗时长的命令造成阻塞 keys、sort,smembers 时间复杂度为O(N), N 为数据库中 key 的数量。当数据库中的个数过大(上亿),这个命令会造成读写线程阻塞数秒;
http://redisdoc.com/set/sadd.html
(3)持久化造成的阻塞AOF / RDB

发布/订阅 及高级特性
在这里插入图片描述
dubbo的注册中心除了Zookeeper也可以Redis,Redis 4 还引入了名为 stream 流处理的新数据类型和对应的命令,野心勃勃想替代流处理中间件(kafka)
GEO地理信息存储
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值