-
Cache Travel-09-java 从零开始手写 redis(五)过期策略的另一种实现思路
前言
java从零手写实现redis(一)如何实现固定大小的缓存?
java从零手写实现redis(三)redis expire 过期原理
java从零手写实现redis(三)内存数据如何重启不丢失?
java从零手写实现redis(四)添加监听器
前面实现了 redis 的几个基本特性,其中在 expire 过期原理时,提到了另外一种实现方式。
这里将其记录下来,可以拓展一下自...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-从零开始手写 redis(四)监听器的实现
前言
java从零手写实现redis(一)如何实现固定大小的缓存?
java从零手写实现redis(三)redis expire 过期原理
java从零手写实现redis(三)内存数据如何重启不丢失?
本节,让我们来一起学习一下如何实现类似 guava-cache 中的 removeListener 删除监听器,和类似 redis 中的慢日志监控的 slowListener。
删除...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-从零开始手写 redis(三)内存数据重启后如何不丢失?
前言
我们在 从零手写 cache 框架(一)实现固定大小的缓存 中已经初步实现了我们的 cache。
我们在 从零手写 cache 框架(一)实现过期特性 中实现了 key 的过期特性。
本节,让我们来一起学习一下如何实现类似 redis 中的 rdb 的持久化模式。
持久化的目的
我们存储的信息都是直接放在内存中的,如果断电或者应用重启,那么内容就全部丢失了。
有时候我们希望...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-从零开始手写缓存框架(12)redis expire 过期的随机特性详解及实现
前言
java从零手写实现redis(一)如何实现固定大小的缓存?
java从零手写实现redis(二)redis expire 过期原理
java从零手写实现redis(三)内存数据如何重启不丢失?
java从零手写实现redis(四)添加监听器
java从零手写实现redis(五)过期策略的另一种实现思路
java从零手写实现redis(六)AOF 持久化原理详解及实现
j...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-从零开始手写缓存框架(二)redis expire 过期原理及实现
前言
我们在 从零手写 cache 框架(一)实现固定大小的缓存 中已经初步实现了我们的 cache。
本节,让我们来一起学习一下如何实现类似 redis 中的 expire 过期功能。
过期是一个非常有用的特性,比如我希望登录信息放到 redis 中,30min 之后失效;或者单日的累计信息放在 redis 中,在每天的凌晨自动清空。
代码实现
接口
我们首先来定义一下接口。
...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-从零手写 redis(一)FIFO 淘汰策略原理详解及实现
程序员的三高
前段时间有一位同事体检,体检医生说他三高。
我打趣道,程序员三高不是高性能、高并发、高可用吗?你是哪三高?
每一个追求性能的开发者,都对高性能孜孜不倦地追求着,而缓存是我们踏上这条高性能大道的必经之路。
小到 cpu 设计,大到服务分布式缓存,我们每时每刻都在接触缓存,今天我们就一起学习下缓存的发展之路,以及如何如何手写一个可以指定大小的 cache。
cache 发...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-09-从零手写 redis(零)为什么手写 redis
redis 的重要性
做 java 的,天天喊着高性能,高并发,高可用。
高性能之中,基本上都离不开 redis。
特别是在当今对于性能要求越来越高的时代,mysql 等传统数据库越来越需要与 redis 结合,这样才能更好的适应我们的业务。
以前手写过一次 hades,觉得不满意,就废弃了。
本次重新再写一次。
开源地址:
https://github.com/houb...
2018-09-01 04:24:42 |
Cache
-
Cache Travel-08-更好的使用缓存
基本概念
在合理应用缓存前,需要了解缓存领域里相关的几个常用术语:
1)缓存命中:表示数据能够从缓存中获取,不需要回源;
2)Cache miss:表示没有命中缓存,如果缓存内存中还有内存空间的话,会将数据加入到缓存中;
3)存储成本:当没有命中缓存时,回源获取后会将数据放置到存储中,整个将数据放置到存储空间所需要的时间以及空间称之为存储成本;
4)缓存失效:当源数据发生变更后,意...
2018-09-01 04:24:42 |
Cache