
缓存
文章平均质量分 52
自驱
ALOHA HEJA HE
展开
-
【一致性hash】负载均衡器分发请求
使用散列函数,我们可以获得一个输出值,之后我们应用模函数来获得与负载均衡器应该将请求定向到的服务器相对应的数字。映射到索引 88 的请求现在由映射到索引 95 的新服务器提供服务,而不是之前映射到索引 99 的服务器。类似地,如果一个服务器被移除,下一个服务器的邻居将接管负载,其他服务器不会受到影响。因此,如果具有特定 IP 地址的用户将被路由到不同的服务器,则需要使之前服务器上的缓存失效。但是,如果我们决定添加一个额外的服务器,我们将得到一个值 (88 % 6),这反过来将请求重定向到服务器 4。...原创 2022-08-05 08:40:41 · 276 阅读 · 0 评论 -
【redis】6.0 源码阅读: Handle the maxmemory directive
processCommand方法调用链路:networking.c【readQueryFromClient-->processInputBuffer-->processCommandAndResetClient-->processCommand】 -->freeMemoryIfNeededAndSafe -->freeMemoryIfNeeded // evict.c -->计算需要释放内存量 -->根据配置的驱逐策略来生释放缓存: server..原创 2021-12-02 23:45:00 · 624 阅读 · 0 评论 -
【算法】ARC,LRU,LFU思想
1 ARC(Adaptive Replacement Cache): 自适应缓存替换算法,它结合了LRU与LFU,来获得可用缓存的最佳使用。核心思想是:当时访问的数据趋向于访问最近的内容,会更多地命中LRU list,这样会增大LRU的空间; 当系统趋向于访问最频繁的内容,会更多地命中LFU list,这样会增加LFU的空间.整个Cache分成两部分,起始LRU和LFU各占一半,后续会动态适应调整partion的位置(记为p) 除此,LRU和LFU各自有一个ghost list(因此,一共4个li原创 2021-12-01 23:45:00 · 1590 阅读 · 0 评论 -
Redis高性能问题---缓存热点---解决方案
1 缓存热点 对一些特别热点的数据大量请求访问,但是缓存只有一份,导致缓存个别分片压力升高;2 解决方案 复制多份缓存副本,将请求分散到多个缓存服务器上,减轻缓存热点导致的单台缓存服务器压力,并且打散每个副本的失效时间。 ...原创 2021-08-08 15:34:29 · 167 阅读 · 0 评论 -
Why does Facebook use delete to remove the key-value pair in Cache instead of updating the Cache?
Just imagine what if two concurrent updates of the same data element occur? You might have different values of the same data item in DB and in memcached. Which is bad. There is a certain number of ways to avoid or to decrease probability of this. Here is t原创 2021-07-01 09:42:07 · 244 阅读 · 0 评论 -
【LRU】LinkedHashMap 实现 LRUCache
1 结构示意图2 源码实现package classloader.lc;import java.util.LinkedHashMap;import java.util.Map;/** * LinkedHashMap实现Map的接口,和HashMap不同的是维持了一个所有entries的双向链表, * 并持有一个该有序链表的迭代器,并有两个Entry<K,V>引用transient LinkedHashMap.Entry<K,V> head,tail..原创 2021-02-25 15:08:07 · 275 阅读 · 0 评论 -
【不懂就画一千零一夜】Spring setter 注入是如何解决循环依赖问题的? 构造注入为啥解决不了循环依赖?
1 注入是如何解决循环依赖问题的? 构造注入为啥解决不了循环依赖?构造注入解决不了:因为构造方法注入的实例,每次都要new一个要构造的实例bean,而A创建时,依赖B,就去创建B,B又依赖了A,继续构造A,如此循环下去 A(B) B(A) A(B)->.... 设值注入:使用三级缓存来解决循环依赖问题;构造的对象使用无参构造方法,会把A先放入二级缓存(前置也会把A的工厂方法放到三级缓存),后面B,会从二级缓存中获取A(中间态)完成属性设置,B就直接进入了一级缓存中,递归会A,最后也进入一级缓存。原创 2020-11-20 14:51:35 · 2138 阅读 · 1 评论 -
【volatile】易失性变量的HB 原则,如何证明?
我想不到证明方法......因为 cpu内copy变量的缓存时长级别和测试代码运行需要的时长,不在一个数量级?原创 2019-10-31 07:58:44 · 313 阅读 · 0 评论 -
"Callback cannot return a non-null value as it gets overwritten by the pipeline"
常用pipeline,这个异常理解姿态:因为:pipeline模式 返回结果是 List<Object> closePipeline = connection.closePipeline(); 会覆盖掉自定义的返回值,所以没有理由去返回一个非null的值,没有用处,所以禁止回调返回非null的值,必须返回null,参考https://docs.spring.io/spring-da...原创 2019-01-07 15:20:45 · 5253 阅读 · 0 评论 -
【技能库】@Cacheable @CachePut Spring 缓存示例(142)
配置 <!-- 启动缓存注解功能 --> <cache:annotation-driven/> <!--generic cache manager --> <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"> <property name="原创 2017-03-15 22:53:54 · 1563 阅读 · 0 评论 -
知识库--本地缓存设计(128)
private LoadingCache<String, String> cCodeCache; private static final String qurl = "http://"; /** * http 请求 IO型计算 采用线程池 */ private static ExecutorService executor = new ThreadPoolE原创 2017-03-01 14:00:47 · 456 阅读 · 0 评论