如何解决Redis并发竞争Key问题
工具/原料
Redis
方法/步骤
1
1.即根据key获取value值为空时,锁上,从数据库中load数据后再释放锁。若其它线程获取锁失败,则等待总迅一段时间后重试。这里要注意,分布式环境中要使用分布式锁,单机的话用普通的锁(synchronized、Lock)就够了。
2
2.不存在就直接返回。布隆过滤器的关键就在于hash算法和容器大小,下面先来简单的实现下看看效果,我这里用guava实现的布隆过滤器:
3
3.然后模拟了1w个不存在于布隆过滤器中的key,匹配错误率为318/10000,也就是说,出错率大概为3%,跟踪下BloomFilter的源码发现默认的容错率就是0.03:
5
5.布隆过败茄劣滤器不支持删除操作。用在这边解决缓存穿透问题就是:
6
6.设置缓存超时时间的时候加上一个随机的时间长度,叮诸比如这个缓存key的超时时间是固定的5分钟加上随机的2分钟,酱紫可从一定程度上避免雪崩问题;
下一篇:快速更改Windows8系统密钥