背景
因为ES的近实时性 所以insert和update es的数据 在短时间可能查询不到(1s左右)
参考上一篇博客https://www.cnblogs.com/ssskkk/p/15417053.html#_label0
这在开发中这是一个很头疼的问题.
解决方案
1.数据insert update到es只后 把数据放在Redis里面 ttl设置5s
2.查询数据的时候 先从redis查询,如果redis没有在查询es
解释 为什么TTL设置5s:因为es的延迟理论上最多5s,
这里设置redis缓存的目的 不是为了提高查询速度(因为es的查询本来就很快)
而是为了解决es延迟
对比Redis做MySQL缓存
Redis作为MySQL的缓存时 因为需要保证缓存和DB的一致性 需要延迟双删 TTL一般8h
延迟双删: 1.删除redis缓存 2.update MySQL db, 3.sleep 1s 后在删除redis缓存
而Redis在上面作为es的缓存 不需要删除es的缓存的原因是
1.缓存TTL只有5s