微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

redis

 redis 数据存储格式
             string
             hash
             list
             set
             zset  有序的set      

redis集群实现原理(哈希槽    https://blog.csdn.net/weixin_44688973/article/details/125441228):

         redis一共有16384个哈希槽,把这些哈希槽分配给redis服务器节点,然后CRC16(key)算法计算key对应的槽放入到redis对应的服务器,从redis中取数据逻辑和这个一致;

哨兵和主从模式:
        哨兵监控redis主节点的状态,
        主从模式,每个redis节点都有一个主节点和N个从节点,主节点不正常时筛选一个从节点顶上,主节点恢复后作为当前主节点的从节点

        

       缓存击穿:大批缓存同一时间过期,大量请求穿透缓存直达数据库

              解决批量增加缓存时将这一批数据的缓存过期时间设置为一个时间段内的不同时间

                         比如设置24小时增加一个30分钟内的随机时间

        缓存穿透:同一时间大量数据查询redis,redis中没有,击穿redis-->查询数据库也没查到

               解决数据库中查不到则在redis中存入一条空数据

        血崩缓存雪崩指的是redis缓存支撑不住或宕掉后,流量疯狂打向后端存储层,造成存储层也会级联宕机的情况

              预防和解决缓存雪崩问题, 可以从以下三个方面进行着手

              1) 保证缓存层服务高可用性,比如使用Redis Sentinel(主从)或Redis Cluster(集群)。

              2) 依赖隔离组件为后端限流熔断并降级。比如使用Sentinel或Hystrix限流降级组件。
比如服务降级,我们可以针对不同的数据采取不同的处理方式。当业务应用访问的是非核心数据(例如电商商品属性用户信息等)时,暂时停止从缓存中查询这些数据,而是直接返回预定义的认降级信息、空值或是错误提示信息;当业务应用访问的是核心数据(例如电商商品库存)时,仍然允许查询缓存,如果缓存缺失,也可以继续通过数据库读取。
             3) 提前演练。 在项目上线前, 演练缓存层宕掉后, 应用以及后端的负载情况以及可能出现的问题, 在此基础上做一些预案设定。
      

        缓存双写不一致:a查询后放缓存,b更新放缓存,a查询后还没放缓存 此时 b更新放了缓存,然后a再放缓存

              1、使用阿里开源的canal配合MQ解决,逻辑:MysqL开启binlog日志,Canal服务端订阅MysqL binlog日志并推送到MQ消息队列,MQ收到数据后将数据更新到redis;

参考:Redis缓存与数据库双写一致性解决方案_八五年的湘哥的博客-CSDN博客_双写一致性解决方案

redis操作手册:链接:https://pan.baidu.com/s/13hTIjcFUpVmiIrWy5va4WA?pwd=o57o 

redis高并发缓存与性能优化:链接:https://pan.baidu.com/s/14vde3_5WZEGJwsmXDzupUA?pwd=vk9n 

redis主从、哨兵:链接:https://pan.baidu.com/s/1wq7AQIA8psuZMaIe0J9mAQ?pwd=qnpa 
 

原文地址:https://www.jb51.cc/wenti/3286215.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐