redis安装
centos普通安装
https://blog.csdn.net/gs_albb/article/details/92022693
docker安装redis并挂载conf
https://www.cnblogs.com/linjiqin/p/10472023.html
docker安装redis sentinel
cache缓存
Spring Boot 与缓存
https://blog.csdn.net/pavel101/article/details/84339421
@Cacheable中value的理解
https://blog.csdn.net/xtj332/article/details/80056385
https://q.cnblogs.com/q/111220/
Redis缓存管理器
https://blog.csdn.net/pavel101/article/details/84581061
https://www.jianshu.com/p/6943bb8a9ab8?utm_source=oschina-app
分布式锁redisson
布隆过滤器(缓存击穿)
布隆过滤器原理、使用场景和注意事项
https://www.jianshu.com/p/2104d11ee0a2
大白话布隆过滤器
https://www.cnblogs.com/CodeBear/p/10911177.html
Guava教程-BloomFilter
https://blog.csdn.net/top_code/article/details/51280862
布隆过滤器扩容及删除过期数据
Redis与HyperLogLog(网站PV统计)
redis订阅通知(订单过期)
我是如何用redis做订阅通知的
https://www.cnblogs.com/linlinismine/p/9214299.html
Redis键空间通知
http://www.redis.cn/topics/notifications.html
SpringBoot实现监听redis key失效事件
使用中的问题:
缓存穿透,缓存击穿,缓存雪崩,缓存并发,热点key
https://www.cnblogs.com/xichji/p/11286443.html
https://www.cnblogs.com/George1994/p/10668889.html
*以下问题基本都可以用锁或者限流来解决,但是也牺牲了系统效率
* 缓存穿透:是指缓存中没有数据库中也没有的数据(恶意用户模拟请求很多缓存中不存在的数据,由于缓存中都没有,导致这些请求短时间内直接落在了数据库上,导致数据库异常。) * 1:布隆过滤器:请求数据前可以先判断redisExists。if true,从redis查数据,拿不到就是误判,再走数据库;if false直接包装数据返回 * 2:缓存空对象:当数据库不命中后,即使返回的空对象也将其缓存起来,同时会设置一个过期时间,之后再访问这个数据将会从缓存中获取,保护了后端数据源; * 两种方案对比:1适用数据相对固定实时性低 2适用数据频繁变化实时性高;1代码复杂,空间占用小 2代码简单,空间占用多,数据不一致问题 * * 热点key:(突然有几十万的请求去访问redis上的某个特定key。那么,这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服务器宕机) * 1:利用二级缓存(比如利用ehcache,或者一个HashMap都可以。在你发现热key以后,把热key加载到系统的JVM中。针对这种热key请求,会直接从jvm中取,而不会走到redis层。) * 2:进行redis多机备份,不要让key走到同一台机子,高可用的redis集群方案,集群使用公式CRC16(key) % 16384来计算Key属于哪个槽,再来进行分发请求 * * 缓存击穿:是指缓存中没有但数据库中有的数据(大量的请求访问刚好过期的热点key) * 1:设置热点key永不过期 * * 缓存雪崩:是指在某一个时间段,缓存集中过期失效(到了过期时间,或者宕机) * 1:数据预热,随机指定失效时间 * * 缓存并发竞争:多个redis的client同时set key引起的并发问题 * 1:将set操作放队列中串行化执行 * 2:加锁执行set