Redis缓存
缓存处理流程
I、缓存穿透
Ⅱ、缓存击穿
加互斥锁,互斥锁参考代码如下:
说明:
1)缓存中有数据,直接返回结果
2)缓存中无数据,第1个进入的线程,获取锁并从数据库去取数据,没释放锁之前,其他并行进入的线程会等待100ms,再重新去缓存取数据。防止都去数据库重复取数据,重复往缓存中更新数据情况出现。
3)这是简化处理,根据key值加锁就更好了,就是线程A从数据库取key1的数据并不妨碍线程B取key2的数据,上面代码明显做不到这点。
微信扫一扫
缓存处理流程
加互斥锁,互斥锁参考代码如下:
说明:
1)缓存中有数据,直接返回结果
2)缓存中无数据,第1个进入的线程,获取锁并从数据库去取数据,没释放锁之前,其他并行进入的线程会等待100ms,再重新去缓存取数据。防止都去数据库重复取数据,重复往缓存中更新数据情况出现。
3)这是简化处理,根据key值加锁就更好了,就是线程A从数据库取key1的数据并不妨碍线程B取key2的数据,上面代码明显做不到这点。
相关推荐