一些Redis知识点记载

手机游戏开发者 2024-10-6 07:12:11 89 0 来自 中国
Redis

数据存放在内存中,必要设置长期化将数据生存在磁盘上,redis提供两种方式举行长期化:
1、RDB长期化(原理是将Reids在内存中的数据库记载定时dump到磁盘上的RDB长期化)
在指定的时间隔断内将内存中的数据集快照写入磁盘,实际操纵过程是fork一个子进程(fork通过体系调用创建一个与原来源程险些完全雷同的进程)先将数据集写入临时文件,写入乐成后,再更换之前的文件,用二进制压缩存储。
2、AOF(append only file)长期化(原理是将Reids的操纵日志以追加的方式写入文件)
以日志的形式记载服务器所处理惩罚的每一个写、删除操纵,查询操纵不会记载,以文本的方式记载,可以打开文件看到具体的操纵记载。

数据范例
1、string  二进制安全的字符串   最大512M
2、list  按照添加次序保持次序的字符串列表
3、set  无序的字符串聚集,不存在重复元素
4、sort_set  已排序的字符串聚集
5、hash  key-value
6、bitmap 
7、hyperloglog  基于概率的数据布局


缓存雪崩:
在某一个时间段,缓存集中逾期失效。
事前:redis 高可用,主从+哨兵,redis cluster,克制全盘瓦解。
事中:当地 ehcache 缓存 + hystrix 限流&降级,克制 MySQL 被打死。
事后:redis 长期化,一旦重启,自动从磁盘上加载数据,快速规复缓存数据。
缓存穿透:
是指查询一个数据库肯定不存在的数据。
从数据库中只要没查到,就写一个空值到缓存里去。
然后设置一个逾期时间,下次有雷同的 key 来访问的时间,在缓存失效之前,都可以直接从缓存中取数据。
缓存击穿:
是指一个key非常热门,在不绝的扛着大并发,大并发集中对这一个点举行访问,
当这个key在失效的刹时,连续的大并发就穿破缓存,直接哀求数据库,就像在一个屏蔽上凿开了一个洞。
将热门数据设置为永世不外期;大概基于 redis or zookeeper 实现互斥锁,
等待第一个哀求构建完缓存之后,再开释锁,进而别的哀求才气通过该 key 访问数据。
服务限流实在是指当体系资源不敷,不敷以应对大量哀求,即体系资源与访问量出现抵牾的时间,
为了包管有限的资源可以或许正常服务,因此对体系按照预设的规则举行流量限定或功能限定的一种方法。


熔断:
体系出现标题时,假如短时间内无法修复,体系要自动做出判断,开启熔断开关,拒绝流量访问,
克制大流量对后端的过载哀求。体系也应该可以或许动态监测后端步伐的修复情况,
当步伐已规复稳固时,可以关闭熔断开关,规复正常服务。
        计数器方法:体系维护一个计数器,来一个哀求就加1,哀求处理惩罚完成就减1,当计数器大于指定的阈值(也可以动态阈值),就拒绝新的哀求。
        队列方法:基于FIFO队列,全部哀求都进入队列,后端步伐从队列中取出待处理惩罚的哀求依次处理惩罚。(可以设置多个队列以设置差异的优先级)
        令牌桶方法:基于一个队列,哀求放到队列内里。但除了队列以外,还要设置一个令牌桶,另外有一个脚本以连续恒定的速率往令牌桶内里放令牌,
                                                        后端处理惩罚步伐每处理惩罚一个哀求就必须从桶里拿出一个令牌,假如令牌拿完了,那就不能处理惩罚哀求了
服务降级:
将体系的全部功能服务举行一个分级,当体系出现标题,必要告急限流时,
可将不是那么告急的功能举行降级处理惩罚,制止服务,如许可以开释出更多的资源供给核心功能的去用


Redis 主从架构
单机的 redis,可以或许承载的 QPS 大概就在上万到几万不等。对于缓存来说,一样寻常都是用来支持读高并发的。
因此架构做成主从(master-slave)架构,一主多从,主负责写,而且将数据复制到别的的 slave 节点,从节点负责读。
全部的读哀求全部走从节点。如许也可以很轻松实现水平扩容,支持读高并发。
redis replication -> 主从架构 -> 读写分离 -> 水平扩容支持读高并发:
redis 接纳异步方式复制数据到 slave 节点,一个 master node 是可以设置多个 slave node,建议必须开启 master node 的长期化.
当启动一个 slave node 的时间,它会发送一个 PSYNC 下令给 master node。
redis主从复制
假如这是 slave node 初次毗连到 master node,那么会触发一次 full resynchronization 全量复制。
此时 master 会启动一个背景线程,开始天生一份 RDB 快照文件,
同时还会将从客户端 client 新收到的全部写下令缓存在内存中。
RDB 文件天生完毕后, master 会将这个 RDB 发送给 slave,slave 会先写入当地磁盘,
然后再从当地磁盘加载到内存中,接着 master 会将内存中缓存的写下令发送到 slave,slave 也会同步这些数据。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 01:08, Processed in 0.162615 second(s), 33 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表