zoukankan      html  css  js  c++  java
  • redis订阅发布消息操作本地缓存

    Redis 本地缓存+远程缓存方案

    使用纯java的ehcache作为本地缓存

    Reids 作为远程分布式缓存

    解决redis缓存压力过大,提高缓存速度,以及缓存性能。

    Redis和ehcache缓存的区别

    如果是单个应用或者对缓存访问要求很高的应用,用ehcache。
    如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。

    缓存更新策略

    1、广播更新策略

    使用redis的发布与订阅来实现缓存更新广播,本地缓存存放更新频率低,但请求量很高的数据,对于更新频率很高的数据应该由redis缓存来承担。

    当某台服务器的本地缓存更新的时候,通过redis发布与订阅机制发布该key的更新信息,其他服务器监听到key的更新信息则更新本地缓存的key

    具体实现

    通过注解方式标明该方法时候使用缓存,缓存的超时时间,是否开启本地缓存,如果开启本地缓存则当更新缓存时,先更新本地缓存和redis缓存,然后通过redis发布更新广播,其他服务器接收到该key的更新信息则更新本地缓存

        如果添加类型的更新则本地缓存新建key然后查询redis的key将value同步到本地缓存

        如果修改类型的更新则查询redis缓存然后将value同步到本地缓存。

        如果删除类型的更新则删除本地缓存的key和value。

    2、定时更新

         考虑的本地缓存和服务器缓存要保证数据的一致性,防止因各种原因导致因广播信息没有接收到或者其他原因本地缓存没有更新特加入定时更新策略。

        定时更新是在广播更新的基础上在本地缓存加入超时时间,如果超过多长时间没有接收到更新广播,则清除本地缓存的key(设置超时时间),来保证缓存的最终一致性。

        缓存注意点

        本地缓存必须设置超时时间,必须定时更更新本地缓存,防止因各种原因导致的本地缓存和redis缓存不一致,保证缓存的一致性。

    redis缓存不应该设置永久缓存,防止因更新失败导致的缓存不一致,以及僵尸类型的key占用服务器内存(一些系统配置级别的可以设置永久缓存,如系统配置,基本上不会进行更新的或者更新频率很低的)

    架构流程图

    单节点架构图

    多节点架构图

  • 相关阅读:
    CodeForces 670E Correct Bracket Sequence Editor
    CodeForces 670F Restore a Number
    HDU 5895 Mathematician QSC
    HDU 5880 Family View
    HDU 5886 Tower Defence
    CSS3.16
    CSS页面定制代码+动漫人物设计
    TSP变形(三进制状压)
    三进制状压(涂抹果酱)
    最小点覆盖(König定理)
  • 原文地址:https://www.cnblogs.com/wjlstation/p/7600932.html
Copyright © 2011-2022 走看看