java 缓存之旅
java 缓存相关知识。
老马啸西风
Github: https://github.com/houbb
Email:[email protected]
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
3天时间,我是如何解决redis bigkey删除问题的?
问题的出现一个平坦无奇的工作日,领导到我工位和我说,“有一个 redis 慢操作,你这几天有时间帮忙解决一下。”“好的。”,管他什么问题,既然让我做,我自然觉得自己能搞定。然后我收到一封 redis 慢操作的 excel 文件,这个还挺好,每个操作的耗时都给出来了,看了下我们系统有几个操作耗时几秒钟。好家伙,对于单线程的 redis 来说,一个操作几秒钟确实是挺致命的,不过都是在凌晨左右,还好。慢操作分析redis 的慢操作已经有了,如果没有,我们可以自己去 redis 服务器查看历史的慢日.原创 2020-10-17 14:58:24 · 959 阅读 · 0 评论 -
从零手写缓存框架(14)redis渐进式rehash详解
redis 的 rehash 设计本文思维导图如下:HashMap 的 rehash 回顾读过 HashMap 源码的同学,应该都知道 map 在扩容的时候,有一个 rehash 的过程。没有读过也没有关系,可以花时间阅读下 从零开始手写 redis(13) HashMap源码详解 简单了解下整个过程即可。HashMap 的扩容简介这里简单介绍下:扩容(resize)就是重新计算容量,向HashMap对象里不停的添加元素,而HashMap对象内部的数组无法装载更多的元素时,对象就需要扩大数组原创 2020-10-11 21:50:50 · 1063 阅读 · 0 评论 -
从零开始手写缓存框架 redis(13)HashMap 源码原理详解
为什么学习 HashMap 源码?作为一名 java 开发,基本上最常用的数据结构就是 HashMap 和 List,jdk 的 HashMap 设计还是非常值得深入学习的。无论是在面试还是工作中,知道原理都对会我们有很大的帮助。本篇的内容较长,建议先收藏,再细细品味。不同于网上简单的源码分析,更多的是实现背后的设计思想。涉及的内容比较广泛,从统计学中的泊松分布,到计算机基础的位运算,经典的红黑树、链表、数组等数据结构,也谈到了 Hash 函数的相关介绍,文末也引入了美团对于 HashMap 的源原创 2020-10-10 21:39:03 · 1126 阅读 · 0 评论 -
从零开始手写缓存框架(12)redis expire 过期的随机特性详解及实现
前言java从零手写实现redis(一)如何实现固定大小的缓存?java从零手写实现redis(二)redis expire 过期原理java从零手写实现redis(三)内存数据如何重启不丢失?java从零手写实现redis(四)添加监听器java从零手写实现redis(五)过期策略的另一种实现思路java从零手写实现redis(六)AOF 持久化原理详解及实现java从零开始手写redis(七)LRU 缓存淘汰策略详解java从零开始手写redis(八)朴素 LRU 淘汰算法性能优化第二原创 2020-10-08 14:32:56 · 930 阅读 · 0 评论 -
java 从零开始手写 redis(11)clock时钟淘汰算法详解及实现
前言java从零手写实现redis(一)如何实现固定大小的缓存?java从零手写实现redis(三)redis expire 过期原理java从零手写实现redis(三)内存数据如何重启不丢失?java从零手写实现redis(四)添加监听器java从零手写实现redis(五)过期策略的另一种实现思路java从零手写实现redis(六)AOF 持久化原理详解及实现java从零开始手写 redis(七)LRU 缓存淘汰策略详解前面我们实现了 FIFO/LRU/LFU 等常见的淘汰策略,不过在操作原创 2020-10-07 19:20:42 · 2485 阅读 · 0 评论 -
java 从零开始手写 redis(十)缓存淘汰算法 LFU 最少使用频次
前言java从零手写实现redis(一)如何实现固定大小的缓存?java从零手写实现redis(三)redis expire 过期原理java从零手写实现redis(三)内存数据如何重启不丢失?java从零手写实现redis(四)添加监听器java从零手写实现redis(五)过期策略的另一种实现思路java从零手写实现redis(六)AOF 持久化原理详解及实现java从零手写实现redis(七)LRU 缓存淘汰策略详解从零开始手写 redis(八)朴素 LRU 淘汰算法性能优化本节一起来原创 2020-10-06 21:56:18 · 1136 阅读 · 0 评论 -
从零开始手写 redis(八)朴素 LRU 淘汰算法性能优化
前言java从零手写实现redis(一)如何实现固定大小的缓存?java从零手写实现redis(三)redis expire 过期原理java从零手写实现redis(三)内存数据如何重启不丢失?java从零手写实现redis(四)添加监听器java从零手写实现redis(五)过期策略的另一种实现思路java从零手写实现redis(六)AOF 持久化原理详解及实现我们前面简单实现了 redis 的几个特性,java从零手写实现redis(一)如何实现固定大小的缓存? 中实现了先进先出的驱除策略。原创 2020-10-04 18:12:36 · 1041 阅读 · 0 评论 -
从零开始手写 redis(七)LRU 缓存淘汰策略详解
前言java从零手写实现redis(一)如何实现固定大小的缓存?java从零手写实现redis(三)redis expire 过期原理java从零手写实现redis(三)内存数据如何重启不丢失?java从零手写实现redis(四)添加监听器java从零手写实现redis(五)过期策略的另一种实现思路java从零手写实现redis(六)AOF 持久化原理详解及实现我们前面简单实现了 redis 的几个特性,java从零手写实现redis(一)如何实现固定大小的缓存? 中实现了先进先出的驱除策略。原创 2020-10-03 21:50:45 · 1629 阅读 · 0 评论 -
从零开始手写 redis(四)监听器的实现
前言java从零手写实现redis(一)如何实现固定大小的缓存?java从零手写实现redis(三)redis expire 过期原理java从零手写实现redis(三)内存数据如何重启不丢失?本节,让我们来一起学习一下如何实现类似 guava-cache 中的 removeListener 删除监听器,和类似 redis 中的慢日志监控的 slowListener。删除监听器说明我们在两种场景下删除数据是对用户透明的:(1)size 满了之后,进行数据淘汰。(2)expire 过期时,清原创 2020-09-30 19:56:08 · 1061 阅读 · 0 评论