zoukankan      html  css  js  c++  java
  • redis学习

    邻近年底,决定辞职,自认为即使没有找到很满意的工作,也应该不会差。事实是有点自信回头,虽然找到了工作,但途中也受到了打击,不得不承认学习的激情不知何时,渐渐熄灭。直到认识一个女生,她让我对未来充满着信心。曾今何时,也在这写过一些技术笔记,如今已烟消云散,昨日已去,来日可期。后面我将吧自己日常积累的技术知识,记录在这里,利人利己。废话到此为止,下面总结一下面试遇到的几个问题。

    redis穿透与雪崩?

       1. 穿透:
            理解:当redis作用于数据缓存的时候,缓存的数据来源于db,而当由于key在redis中未获取到value时,则逻辑代码会从数据库中获取value,这种现象叫做缓存穿透。
                 若存在大量key穿过缓存,从db获取value,则会导致数据库压力剧增,甚至瘫痪。
            方案: a.当出现大量无效key时,会从数据库获取value,使用分布式互斥锁对load db进行控制。
                  b.对请求进行验证,判断是否是有效的key,比如布隆过滤器。
                  c.无论key是否取到值,直接返回null。对不太稳定的缓存设置过期时间,如果缓存过期,异步起一个线程从db中获取数据。
            比较:待补充
        2。雪崩:
            理解:redis key 大面积过期
           
            
    

    redis 集群搭建总结(具体搭建步骤,网上很多不细述:https://my.oschina.net/lyyjason/blog/1842002--cluster搭建地址)

        ##redis主从复制与哨兵模式搭配使用:前者提供高可用,后者提供master选举
        ##redis-cluster =主从复制+哨兵模式+高并发+可扩展。
        1.下载redis
        2.安装gcc  执行make命令安装redis
        主从复制:
               启动多个redis  ,slaveof ip port 设置master ,info replication 查看redis主从信息
               注意项:1.当master存在密码是 slave 必须配置文件masterauth设置主机的密码,或者使用config set masterauth手动设置密码,不然即使slaveof执                    
                        行成功,master-link-status 显示为down,设置完masterauth密码后则显示up。
                      2.当主从复制,master宕机,必须手动切换slave为master不然从机不会进行master选举,从机master-link-status变成down,会一直等待master启动,master-link-            
                        status恢复成up
                      3.master 默认可写可读,slave 默认只读,可以修改slave-read-only  yes:只读 no:读写
        哨兵模式:master宕机自动选举master
                注意项:master宕机重启后 会作为slave自动同步到选举后的master上 ,大件事 master和slave密码要保持一致,不然选举后将slave切换成maseter会因此失败。
        cluster集群:密码也需要保持一致,而且需要修改/usr/local/share/gems/gems/redis-3.3.3/lib/redis/client.rb             
                    (https://img2018.cnblogs.com/blog/1909126/201912/1909126-20191229210642240-329425897.png)修改成正确的密码即可
                cluster:每个key通过CRC16(key)%16384来决定放置哪个槽,共有16384个槽被分配到不同的master中(slave中是没有分配曹的),从而将key放入对应的master中,当master 
                        宕机,其slave会升级成为master,并将原master的曹与数据转移到新的master上。
                扩容:就是添加新的master-slave  让后将其他master的槽分摊给新家的master即可,槽中的数据也会随之转移。
                缩容:相反。
                命令:  查看集群节点
                        cluster nodes
    
                        查看key对应的slot
                        cluster keyslot key
    
                        查看slot和节点的对应关系
                        cluster slots
    

    redis实现分布式锁,放值重复请求,分布式id等待续。

  • 相关阅读:
    C#加密算法汇总
    解决无法连接到visual studio开发服务器的问题
    javascript
    js仿移动端的下拉刷新,上拉加载更多。
    博客园第一篇博文——做一个思考行动派
    $("<div />")代表的意思
    ini_set 设置php配置项 在windows和linux下的不同
    Java入门1
    Java入门2
    jQuery获取元素上一个、下一个、父元素、子元素
  • 原文地址:https://www.cnblogs.com/animal-s/p/12104843.html
Copyright © 2011-2022 走看看