数据缓存中间件
文章平均质量分 94
数据缓存中间件、layering-cache、caffeine
xiaolyuh123
凡是过去,皆为序幕
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Caffeine 深度解析
Caffeine是一款基于Java 8的高性能本地缓存框架,作为Guava Cache的升级版本,它结合了Java 8的Lambda表达式和CompletableFuture异步特性进行优化。核心优势包括极致的读写性能、超高缓存命中率(采用自研W-TinyLFU淘汰算法)、轻量级无依赖、丰富功能特性和内存友好设计。支持多种缓存策略(大小/时间/引用过期)和工作模式(手动/自动/异步加载),并提供并发控制、缓存刷新、淘汰监听、统计功能等高级特性。Caffeine的底层采用分段式并发哈希表和无锁化设计,通过惰性原创 2026-01-10 20:24:00 · 1133 阅读 · 0 评论 -
Redis 序列化方式StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer
当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer。Spring Data JPA为我们提供了下面的Serializ...原创 2017-11-30 23:14:43 · 49504 阅读 · 9 评论 -
缓存设计要点-缓存穿透、缓存击穿和缓存雪崩实践
我们使用缓存的主要目是提升查询速度和保护数据库等稀缺资源不被占满。而缓存最常见的问题是缓存穿透、击穿和雪崩,在高并发下这三种情况都会有大量请求落到数据库,导致数据库资源占满,引起数据库故障。今天我主要分享一下layering-cache缓存框架在这个三个问题上的实践方案。概念缓存穿透在高并发下,查询一个不存在的值时,缓存不会被命中,导致大量请求直接落到数据库上,如活动系统里面查询一个不存在的......原创 2018-12-29 10:27:03 · 1852 阅读 · 0 评论 -
为监控而生的多级缓存框架 layering-cache
简介layering-cache是在Spring Cache基础上扩展而来的一个缓存框架,主要目的是在使用注解的时候支持配置过期时间。layering-cache其实是一个两级缓存,一级缓存使用Caffeine作为本地缓存,二级缓存使用redis作为集中式缓存。并且基于redis的Pub/Sub做缓存的删除,所以它是一个适用于分布式环境下的一个缓存系统。支持支持缓存监控统计支持缓存过期时...原创 2018-10-15 10:06:17 · 2648 阅读 · 5 评论 -
Spring Redis Cache @Cacheable 大并发下返回null
问题描述最近我们用Spring Cache + redis来做缓存。在高并发下@Cacheable 注解返回的内容是null。查看了一下源代码,在使用注解获取缓存的时候,RedisCache的get方法会先去判断key是否存在,然后再去获取值。这了就有一个漏铜,当线程1判断了key是存在的,紧接着这个时候这个key过期了,这时线程1再去获取值的时候返回的是null。RedisCache的g...原创 2017-11-23 11:55:21 · 6786 阅读 · 5 评论
分享