redis知识点总结

2 篇文章 0 订阅

https://www.bilibili.com/video/BV1LQ4y127n4?p=153

1、保证mysql与redis数据一致性?

双清缓存、

2、什么情况下会出现不一致性,如何避免

高并发:redis抖动

jvm时间差(失效瞬间的多线程读写)

3、redis扩容(集群与主从的优缺点)

集群:能横向扩展(>=3台,费用高)稳定性强,理论上没有负载瓶颈

主从:只能纵向扩展(2台机器即可),有上限(主库即为负载上限)一旦阻塞(keys),其他请求全部排队

4、redis性能问题(瓶颈)

5、为啥单线程快?

内存调用,优秀的数据结构:hash表、跳表,多路复用机制:IO多路复用指一个线程处理多个IO流,linux的select和epoll机制(一个线程肩痛不同事件:读、写、链接等事件,放在不同的处理函数中,redis只做了监听事件和调用不同函数),调用函数是和linux的回调机制完成:select、epoll机制一旦检测到相应套接字是否请求到达,从而触发对应事件

单线程指的是网络处理,读写操作是单线程的

5、生成分布式唯一id 

单机版:

集群版:采用步长(默认5,可根据集群个数算)

缺点,依赖redis集群(高科用会被限制)

雪花算法:Twitter分布式自增id算法snowflake

 

 

 优化多机器时钟不一致导致的id重复的优化方案

类似es分片机制

redis插槽机制://TODO

redis持久化:

RDB持久化:其实就是通过生成备份/快照文件  (执行save命令:主线程执行,redis单线程,bgsave:子线程后台运行)退出后自动保存|也可以配置定时执行,save  60 10 (60秒内被修改10次)

bgsave原理(主进程操作虚拟内存[页表],操作系统根据映射关系修改/读取内存):通过拷贝页表实现内存读取

 

AOF持久化:

追加文件(类似binlog)将执行命令,来恢复数据

 AOF(记录过程)比RDB(记录最终结果)大很多,可通过bgrewriteaof(重写命令,实现命令缩减和压缩)

 更消耗IO,数据更安全

slaveof指定主从 

1、第一次从找主要:rdb文件同步

 第二次将repl_baklog(增量数据) 同步给从

通过replicationId确定是否第一次同步,

offset:偏移量,记录当前同步进度

 全量同步优化:

1、设置无磁盘复制,通过网络复制

2、redis单节点内存占用不要太大,减少rdb过多IO

3、提高repl_backlog大小(减少导致宕机后同步数据被覆盖)

4、

主从同步全量条件:1、第一次,2、宕机较旧repl_backlog被重写

散裂插槽:数据与插槽绑定(key进行hash % 16384=卡槽)  通过{}将同一业务进行分配同一插槽

16384=2k=2*8*1024

(例:设置redis.setnx的缓存通知指定过期时间),同时后台检查锁,进行续期(30秒到15秒时,进行续期到30秒),采用版本号:解决delete 操作的是否自己当初设置的key

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值