Redis缓存设计与性能优化

多级缓存架构

缓存设计

缓存穿透

  • 缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。
  • 缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。

造成缓存穿透的基本原因有两个

  • 自身业务代码或者数据出现问题。
  • 一些恶意攻击、 爬虫等造成大量空命中。

缓存穿透问题解决方案

1、缓存空对象

java 复制代码
String get(String key) {
    // 从缓存中获取数据
    String cacheValue = cache.get(key);
    // 缓存为空
    if (StringUtils.isBlank(cacheValue)) {
        // 从存储中获取
        String storageValue = storage.get(key);
        cache.set(key, storageValue);
        // 如果存储数据为空, 需要设置一个过期时间(300秒)
        if (storageValue == null) {
            cache.expire(key, 60 * 5);
        }
        return storageValue;
    } else {
        // 缓存非空
        return cacheValue;
    }
}
相关推荐
christine-rr6 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
凯子坚持 c7 小时前
精通 Redis list:使用 redis-plus-plus 的现代 C++ 实践深度解析
c++·redis·list
weixin_456904277 小时前
跨域(CORS)和缓存中间件(Redis)深度解析
redis·缓存·中间件
波波烤鸭8 小时前
Redis 高可用实战源码解析(Sentinel + Cluster 整合应用)
数据库·redis·sentinel
MarkHard12316 小时前
如何利用redis使用一个滑动窗口限流
数据库·redis·缓存
island131418 小时前
【Redis#10】渐进式遍历 | 数据库管理 | redis_cli | RES
数据库·redis·bootstrap
心想事成的幸运大王18 小时前
Redis的过期策略
数据库·redis·缓存
wuyunhang1234561 天前
Redis---集群模式
数据库·redis·缓存
Seven971 天前
Redis是如何进行内存管理的?缓存中有哪些常见问题?如何实现分布式锁?
redis
IAtlantiscsdn1 天前
Redis Stack扩展功能
java·数据库·redis