多语言展示
当前在线:1968今日阅读:168今日分享:49

如何解决Redis并发竞争Key问题

如何解决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分钟,酱紫可从一定程度上避免雪崩问题;

推荐信息