一种是直接查询数据库,但是因为字段没有索引,查询会非常慢。 另一种是双写到缓存中,通过 set 存放和校验重复数据,但这样全量刷新缓存时,会有缓存和数据库数据不一致的可能,有什么好的办法嘛?
一种是直接查询数据库,但是因为字段没有索引,查询会非常慢。 另一种是双写到缓存中,通过 set 存放和校验重复数据,但这样全量刷新缓存时,会有缓存和数据库数据不一致的可能,有什么好的办法嘛?
|
yhvictorFeb 27, 2022 via iPhone
1
没懂全量刷新为啥不一致,望解释。
单独起个服务器维护个索引不就好了? |
|
rekulasFeb 27, 2022
2
@yhvictor 他是说缓存和数据库一致性问题,这个没有真正完美解决方案,日经贴
缓存是个方案,担心全量刷新出问题具体是如何操作的?是否可以刷新时加锁保证一致性,还有字段为什么不能加索引,查询并发数大概什么级别,不同情况有不同解决方案 |
|
timethinkerFeb 28, 2022 via iPhone
3
不能加索引是因为数据量太大的原因?有没有实际测试过写入的时候性能影响?不要猜测,要动手测试。
|
|
mineralsaltFeb 28, 2022
4
要么查数据库, 要么查缓存, 要么就设计一种保证不会重复的数据生成方案, 例如 UUID
|
|
nebkadFeb 28, 2022
5
Hash and/or Merkel Tree
|
|
MIUIOSFeb 28, 2022 via iPhone
6
我没理解楼主的意思,但不想通过加索引来解决唯一性,可以试试外加一个字段,这个字段是重要值加起来算出来的 md5 ,每次入值时查询一遍这个 md5 ,l 就能达到唯一了
|
|
opengpsFeb 28, 2022 via Android
7
哈希值进缓存,写入时候检查比对
|
|
bthuluFeb 28, 2022
8
缓存不能当数据库用的, 缓存只是缓存, 只用于提高查询性能, 当数据库用, 哪天缓存崩一下搞不死你
|
|
yibo2018Feb 28, 2022
9
前几天总结了下这个问题,最终处理方案是把需要唯一的字段拼接起来,创建一个中间表,把这个新的字段当唯一索引
|
|
jones2000Feb 28, 2022
10
要一致就锁表, 等两边都更新完了,在解锁
|