这篇文章主要讲解了“redis知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“redis知识点有哪些”吧!
把数据存储在内存,极高的效率提供读写功能。配合sentinel实现主从,或者集群实现大数据和流量下的分布。
string list hash set zset
惰性删除:查询的时候发现过期,执行del,然后返回null。对内存不友好 定期删除:后台线程任务定期去删除过期key。对cpu不友好。 redis是采用惰性删除+定期删除,保证了内存和cpu的性能。
RDB 生产RDB文件:对内存中的数据进行持久化 载入RDB文件:对未过期的数据恢复到内存中 save 会阻断用户操作。 bgsave不会阻断用户操作。 自动持久化可以配置时间,比如900秒,1次操作的时候进行、300秒60次操作的时候执行、60秒200次操作的时候执行。
AOF 生产AOF文件:保存执行命令到AOF文件中。当过期key被惰性删除或者定期删除后,写入del key命令。 载入AOF文件:重新一条条执行AOF文件中的命令。 复写AOF文件:随着时间延长,AOF会越来越大,所以需要重新生成AOF文件。这种生成方式是通过读取内存中的数据,未过期的数据生成命令存在AOF中。
对于主从模式,持久化数据恢复到内存中的时候,主会只会恢复未过期数据,从所有数据都会进行恢复,从没有惰性删除和定期删除,只会等待主来同步数据。
订阅key的操作 订阅某个操作的key
127.0.0.1 123 > slaveof 127.0.0.1 456 123成为456的从 全量同步:从向主发送SYNC,主生产RDB,同步给从,同时期间缓冲期产生的命令也同步给从。
部分同步:从断线重连,向主发送PSYNC,主把断线后的命令发给从。复制偏移量
命令同步:完全同步或者部分同步完成后,主会把命令同步给从。
部分同步实现原理:主机器ID+偏移量+复制积压缓冲区
从会每秒一次发送心跳给主保持连接和传递偏移量
可以支持故障转移,从服务器中选出新的主。
setinel监控主,需要通过配置或者命令的方式指定。
setinel和主和从服务器进行连接的时候会建议命令连接、消息连接。
setinel和主建立连接之后,会通过主服务发送的信息获取到从服务器信息并与从服务器建立连接。
setinel通过主和从服务器信息发现其他setinel机器并建立命令连接。
setinel监控到主服务器下线之后,会询问其他setinel服务器是否同意下线,同意下线达到阈值则会进行下线。
sentinel如何发现主? 通过setinel配置初始化的主服务器
sentinel如何发现从? 通过主服务器给setinel回复的信息里面自动发现从服务器
sentinel如何建立连接? sentinel会分别建立命令连接和消息连接。
sentinel如何发现其他sentinel? 通过主从服务器发送的消息发现其他sentinel,并且相互建立命令连接。
sentinel如何选出领头sentinel 发现了主服务器下线的sentinel会相互询问,并且把自己作为局部领头。当然选出来的局部领头大于半数,则该局部领头成为全局领头来选举新主,并把从的主改为新主。
sentinel选举出新的主 根据一定规则从里面选出新的主,规则要求就是网络好,数据最新,数据最新通过偏移量发现,然后把主的角色改变。
sentinel把从的旧主改成新的主
sentinel如何发现服务下线? 通过每秒一次的ping命令,服务器没有回复pong达到一定时间认为下线。
sentinel选取领头就是通过raft算法实现的。
setinel能够支持主从,但是无法解决高并发下单机内存过大和qps过大的问题。这种情况下需要redis集群来解决 redis集群每台机器分配若干个槽,0-2的14次方-1个,每台机器负责若干个槽。通过对key的hash值取模计算的方式能得属于哪个槽,也能得知属于哪个机器,如果当前机器不是槽所属机器,则会通过move指令让客户端重定向到指定机器。
redis重新分片 新机器的槽知道之后,源机器里面的槽会一个一个迁移过去,在迁移过程中如果有请求过来,则会查询源机器是否存在对应的key,如果存在则源机器执行,不存在则通过ack重定向到新机器执行。
集群复制与故障转移 集群之间通过ping消息维持心跳。如果其中某主节点首先得到下线消息,会询问集群中所有主节点,当这个台机器得到半数以上下线回复。这个主节点会广播一条下线消息。下线的主节点的从节点收到消息之后,会有一个从节点被选中自动成为主节点,并且广播pong消息,告诉其他主节点新的主节点诞生并接管原有的槽。
选主过程 从节点会广播一条我是要选举成为主的消息,没过投过票的会投给他,根据故障转移次数来唯一确定最新一次的投票。半数以上的主节点同意的从节点会自动成为主节点。
1.什么是二八定律 数据常被用到的只有20%甚至更少,针对这20%数据做优化效果更好,性价比更高。
2.如何通过redis实现分布式锁?
3.缓存穿透 场景:查询数据库中一定不存在的数据,导致请求直接落db。 解决方案:针对不存在的数据,缓存中存放null。也可以把可能存在的数据放入布隆过滤器,这样能过滤掉一定不存在的数据。
4.缓存雪崩 场景:大量数据缓存key集中过期,导致请求大量落入db 解决方案:缓存过期时间设置的时候增加随机数,热门的数据缓存过期时间可以长一点,冷门数据缓存过期时间短一点、
5.缓存击穿 场景:缓存中热点数据过期,瞬间大量请求落入db。 解决方案:热点数据永不过期,请求db的时候使用分布式锁。
感谢各位的阅读,以上就是“redis知识点有哪些”的内容了,经过本文的学习后,相信大家对redis知识点有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。