redis常见问题
一、缓存 1.1 缓存穿透 1.1.1 定义 缓存穿透是指用户查询不存在的数据,mysql中查不到数据无法写入redis,导致每次查询都会落在mysql上 1.1.2 解决方案 1.1.2.1 缓存空数据 缓存空数据,数据库查询结果为空,任然把这个空结果缓存至redis {key:'查询条件',value:null} 优点:简单 缺点:消耗内存,redis和数据库可能出现数据不一致(第一次查询数据库中没有数据,在redis缓存了一个null值,然后新增了数据到数据库,此时数据库和redis中数据就不一致了,需要手动更新数据库数据到redis,增加了数据维护的复杂性) 1.1.2.2 布隆过滤器 参考布隆过滤器 - 问尤龙の时光 (wenyoulong.com) 1.1.3 代码示例 有如下接口方法,根据用户ID查询用户信息,用户id随便编一个都行 /** * 根据ID获取的用户,用于测试缓存穿透 * @param userId 用户IO * @return 用户信息 */ @GetMapping("/getById/{userId}") public String getById(@....