项目中首页接口使用缓存,使用的策略是:先查缓存,若缓存中没有则查询数据库,然后将数据放入redis中。
遇到的问题如下:
高并发下,多个线程同时穿透缓存,导致缓存的数据存储多份。
解决思路:
加锁:对DB穿透的线程往缓存中写数据的时候加锁,获取锁的用户才有资格进行存储在缓存中,其他的线程直接查数据库,或者返回null。
项目中首页接口使用缓存,使用的策略是:先查缓存,若缓存中没有则查询数据库,然后将数据放入redis中。
遇到的问题如下:
高并发下,多个线程同时穿透缓存,导致缓存的数据存储多份。
解决思路:
加锁:对DB穿透的线程往缓存中写数据的时候加锁,获取锁的用户才有资格进行存储在缓存中,其他的线程直接查数据库,或者返回null。