mysql缓存方案
缓存方案主要用于缓存用户定义的热点数据,用户可以通过缓存来获取数据,从而降低数据库的压力。内存访问速度远大于磁盘访问速度,mysql缓存的数据跟业务无关,缓存的是最近操作的数据。mysql作为项目的主要数据库,缓存数据库只是辅助功能。
缓存一致性
mysql有,redis无,正常
mysql无,redis有,不正常
都有,数据不一致,不正常
都有,数据一致,正常
都没有,正常
读写策略
读策略:先读缓存,缓存存在直接返回,缓存不存在,去访问Mysql获取,若存在,再写缓存
写策略:
安全:先删除缓存中数据,再写mysql,再同步到redis.这样mysql的压力会大
效率:先写缓存,设置过期时间(防止mysql写失败),再写mysql,最后将mysql中的数据同步到redis中
同步方案
触发器 + UDF(user defined function,c++扩展代码),每次表变更都需要与redis重新建立连接
go-mysql-transfer、canal(java,考虑分布式))伪装成mysql的从数据库,bin log->i/o thread->relay lo
...