2 个回答
使用分布式锁,针对查询的key做互斥限制,确保同一时间针对大量发起的同一个key做查询的时候仅一个有效,查询结果之后,放入redis,如果查询为空,则合理使用redis的过期策略来完善。
发布于:1个月前 (05-08) IP属地:
1、缓存空对象:对查询结果为空的对象也进行缓存,若为集合则缓存空集合,若为单个对象则用字段标识区分,设置较短过期时间,后续若有数据再更新缓存。
2、单独过滤处理:对所有可能对应数据为空的key进行统一存放,在请求前做拦截,避免请求穿透到后端数据库,但实现相对复杂。
3、使用布隆过滤器:将所有可能存在的数据哈希到一个足够大的BitSet中,不存在的数据将会被拦截掉,从而避免了对底层存储系统的查询压力。
4、无效值加入redis:当用户查询不存在的数据时,将该key存入redis,用特殊value表示不存在的数据,但可能造成redis缓存空间浪费。
2、单独过滤处理:对所有可能对应数据为空的key进行统一存放,在请求前做拦截,避免请求穿透到后端数据库,但实现相对复杂。
3、使用布隆过滤器:将所有可能存在的数据哈希到一个足够大的BitSet中,不存在的数据将会被拦截掉,从而避免了对底层存储系统的查询压力。
4、无效值加入redis:当用户查询不存在的数据时,将该key存入redis,用特殊value表示不存在的数据,但可能造成redis缓存空间浪费。
发布于:5个月前 (01-13) IP属地:北京市
我来回答
您需要 登录 后回答此问题!