page contents
Nen
Nen - 程序员

性别: 天津 - 天津市 注册于 2021-06-23

向TA求助
2850金币数
43180 经验值
1个粉丝
主页被访问 6241 次

3096 个回答

0 赞同

Redis主从架构数据会丢失吗,为什么?

1、异步复制导致的数据丢失:因为master -> slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机了,此时这些部分数据 就丢失了。 2、脑裂导致的数据丢失:某个master所在机器突然脱离了正常的网络,跟其他slave机器不能连接,但是实际上master还运行着,此时哨兵可能就 会认为master宕机了,然后...

回答于 2021-11-26 15:23

0 赞同

如何解决主从架构数据丢失的问题?

数据丢失的问题是不可避免的,但是我们可以尽量减少。 在Redis的配置文件里设置参数 min-slaves-to-write 1 min-slaves-max-lag 10 min-slaves-to-write默认情况下是0,min-slaves-max-lag默认情况下是10。 上面的配置的意思是要求至少有1个slave,数据复制和同步的延迟不能超过10秒。如果说一旦所有的slave,数据复制...

回答于 2021-11-26 15:22

0 赞同

Redis哨兵是怎么工作的?

1. 每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令。 2. 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被当前 Sentinel 标记为主观下线。 3. 如果一个Master被标记为主观下线,则正在监...

回答于 2021-11-26 15:21

0 赞同

什么是缓存预热?

缓存预热是指系统上线后,提前将相关的缓存数据加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接 查询事先被预热的缓存数据。 如果不进行预热,那么Redis初始状态数据为空,系统上线初期,对于高并发的流量,都会访问到数据库中, 对数据库造成流量的压力。 缓存预热解决方案:...

回答于 2021-11-25 14:57

0 赞同

什么是缓存降级?

缓存降级是指缓存失效或缓存服务器挂掉的情况下,不去访问数据库,直接返回默认数据或访问服务的内存数据。降级一般是有损的操作,所以尽量减少降级对于业务的影响程度。 在进行降级之前要对系统进行梳理,看看系统是不是可以丢卒保帅;从而梳理出哪些必须誓死保护,哪些可降级;比如可以参考日志级别设置预案: 一般:比...

回答于 2021-11-25 14:57

0 赞同

Redis真的是单线程?

讨论 这个问题前,先看下 Redis的版本中两个重要的节点: 1. Redisv4.0(引入多线程处理异步任务) 2. Redis 6.0(在网络模型中实现多线程 I/O ) 所以,网络上说的Redis是单线程,通常是指在Redis 6.0之前,其核心网络模型使用的是单线程。 且Redis6.0引入多线程I/O,只是用来处理网络数据的读写和协议的解析,而执行...

回答于 2021-11-25 14:53

0 赞同

Redis 6.0为何引入多线程?

很简单,就是 Redis的网络 I/O 瓶颈已经越来越明显了。 随着互联网的飞速发展,互联网业务系统所要处理的线上流量越来越大,Redis的单线程模式会导致系统消耗很多 CPU 时间在网络 I/O 上从而降低 吞吐量,要提升 Redis的性能有两个方向: 优化网络 I/O 模块 提高机器内存读写的速度 后者依赖于硬件的发展,暂时无解。...

回答于 2021-11-25 14:52

0 赞同

Redis 6.0 多线程的实现机制?

流程简述如下: 主线程负责接收建立连接请求,获取 Socket 放入全局等待读处理队列。 主线程处理完读事件之后,通过 RR(Round Robin)将这些连接分配给这些 IO 线程。 主线程阻塞等待 IO 线程读取 Socket 完毕。 主线程通过单线程的方式执行请求命令,请求数据读取并解析完成,但并不执行。 主线程阻塞等待 IO 线程将...

回答于 2021-11-25 14:50

0 赞同

Redis 6.0 采用多线程后,性能的提升效果如何?

Redis 作者 antirez 在 RedisConf 2019 分享时曾提到:Redis 6 引入的多线程 IO 特性对性能提升至少是一倍以上。 国内也有大牛曾使用 unstable 版本在阿里云 esc 进行过测试,GET/SET 命令在 4 线程 IO 时性能相比单线程是几乎是翻倍了。

回答于 2021-11-25 14:49

0 赞同

Redis 6.0开启多线程后,是否会存在线程并发安全问题?

从实现机制可以看出,Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程顺序执行。 所以我们不需要去考虑控制 Key、Lua、事务,LPUSH/LPOP 等等的并发及线程安全问题。

回答于 2021-11-25 14:48