缓存的数据与数据库数据一致性的方案

方式1:数据库保存数据,redis不persist

redis启动后,从数据库加载数据

不要求强一致实时性的读请求,都由redis处理

要求强一致实时性的读请求,由数据库处理

写请求有2种处理方式,由数据库处理

- 应用先写道数据库,然后更新redis

- 应用先写道数据库,然后其它daemon同步到redis

优点:redis启动不用处理redis数据和数据库不一致

缺点:redis启动给数据库很大的读压力


方式2:数据库和redis分别处理不同的数据类型

数据库处理要求强一致实时性的数据,例如金融数据、交易数据

redis处理不要求强一致实时性的数据,例如网站最热贴排行榜

redis和mysql数据的同步,代码级别大致可以这样做:

读: 读redis->没有,读mysql->把mysql数据写回redis

写: 写mysql->成功,写redis


并发不高的情况:

读: 读redis->没有,读mysql->把mysql数据写回redis,有的话直接从redis中取;

写: 写mysql->成功,再写redis;


并发高的情况:

读: 读redis->没有,读mysql->把mysql数据写回redis,有的话直接从redis中取;

写:异步话,先写入redis的缓存,就直接返回;定期或特定动作将数据保存到mysql,可以做到多次更新,一次保存;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。