海量数据下,如何快速查找一条数据?
- 使用布隆过滤器,快速过滤不存在的记录。
使用Redis的bitmap结构来实现布隆过滤器。 - 在Redis中建立数据缓存。
- 以普通字符串的形式来存储(userId -> user.json)
- 以一个hash来存储一条记录
- 以一个整的hash来存储所有的数据
存在的问题:- 缓存击穿:对不存在的数据也建立Key,这些key都是经过布隆过滤器过滤的,所以一般不会太多。
- 缓存过期:将热点数据设置成永不过期,定期重建缓存;使用分布式锁。
- 查询优化
- 按槽位分配数据
- 自己实现槽位计算,找到记录应该分配到哪台机器上,然后直接去目标机器上找。