首页
AI Coding
AIDP
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
缓存
订阅
独立开发者小飞
更多收藏集
微信扫码分享
微信
新浪微博
QQ
14篇文章 · 0订阅
京东二面:Redis为什么快?我说Redis是纯内存访问的,然后他对我笑了笑。。。。。。
Redis通过结合纯内存操作、单线程模型、IO多路复用技术和一系列精心设计的高效数据结构,实现了在高并发、低延迟场景下的优秀性能表现。
从零开始手写缓存框架 redis(13)HashMap 源码原理详解
作为一名 java 开发,基本上最常用的数据结构就是 HashMap 和 List,jdk 的 HashMap 设计还是非常值得深入学习的。 无论是在面试还是工作中,知道原理都对会我们有很大的帮助。 本篇的内容较长,建议先收藏,再细细品味。 不同于网上简单的源码分析,更多的是实…
从零手写缓存框架(14)redis渐进式rehash详解
读过 HashMap 源码的同学,应该都知道 map 在扩容的时候,有一个 rehash 的过程。 没有读过也没有关系,可以花时间阅读下 从零开始手写 redis(13) HashMap源码详解 简单了解下整个过程即可。 扩容(resize)就是重新计算容量,向HashMap对…
从零开始手写缓存框架(12)redis expire 过期的随机特性详解及实现
第二节中我们已经初步实现了类似 redis 中的 expire 过期功能,不过存在一个问题没有解决,那就是遍历的时候不是随机返回的,会导致每次遍历从头开始,可能导致很多 Keys 处于“饥饿”状态。 本节我们一起来实现一个过期的随机性版本,更近一步领会一下 redis 的巧妙之…
java 从零开始手写 redis(11)clock时钟淘汰算法详解及实现
前面我们实现了 FIFO/LRU/LFU 等常见的淘汰策略,不过在操作系统中,实际上使用的是时钟页面置换算法。 LRU 的性能确实很好,不过比较消耗内存,而且实现比较麻烦。 时钟页面置换算法就是一种近似 LRU 的算法实现,可以看作是对 FIFO 算法的改进。 LRU算法的性能…
java 从零开始手写 redis(十)缓存淘汰算法 LFU 最少使用频次
本节一起来学习下另一个常用的缓存淘汰算法,LFU 最少使用频次算法。 LFU(Least Frequently Used)即最近最不常用.看名字就知道是个基于访问频次的一种算法。 LRU是基于时间的,会将时间上最不常访问的数据给淘汰,在算法表现上是放到列表的顶部;LFU为将频率…
从零开始手写 redis(八)朴素 LRU 淘汰算法性能优化
我们前面简单实现了 redis 的几个特性,java从零手写实现redis(一)如何实现固定大小的缓存? 中实现了先进先出的驱除策略。 但是实际工作实践中,一般推荐使用 LRU/LFU 的驱除策略。 LRU算法全称是最近最少使用算法(Least Recently Use),广泛…
java 从零开始手写 redis(七)LRU 缓存淘汰策略详解
我们前面简单实现了 redis 的几个特性,java从零手写实现redis(一)如何实现固定大小的缓存? 中实现了先进先出的驱除策略。 但是实际工作实践中,一般推荐使用 LRU/LFU 的驱除策略。 LRU 是由 Least Recently Used 的首字母组成,表示最近最…
java 从零开始手写 redis(六)redis AOF 持久化原理详解及实现
我们前面简单实现了 redis 的几个特性,java从零手写实现redis(三)内存数据如何重启不丢失? 中实现了类似 redis 的 RDB 模式。 用过 kafka 的同学肯定知道,kafka 也用到了顺序写这个特性。 顺序写添加文件内容,避免了文件 IO 的随机写问题,性…
java 从零开始手写 redis(五)过期策略的另一种实现思路
前面实现了 redis 的几个基本特性,其中在 expire 过期原理时,提到了另外一种实现方式。 这里将其记录下来,可以拓展一下自己的思路。 以前的设计非常简单,符合最基本的思路,就是将过期的信息放在一个 map 中,然后去遍历清空。 为了避免单次操作时间过长,类似 redi…