noobmaster:
背景
- 需要提供一个接口用来查询数据在不在表里面(只需知道是否存在就行,不需要额外数据),每天的并发量是 300w 左右。
- 接口和数据库都是采用的 md5 作为 key, 允许数据实际存在但是返回不存在,但是数据不存在的信息必须是准确的(跟布隆过滤器误报的场景刚好相反)。
- 数据表有一亿行左右。
问题
- 不加缓存,直接查数据库。查询压力是不是过大了点?
- 用 redis 缓存存在数据的 md5 ,后续查询压力会逐渐落到 redis 上,用 set 类型是否是开销最小的?
- 跟布隆过滤器误报场景相反的数据结构?