mysql 内存表替代redis的完整方案记录
内存表替代redis的完整方案记
redis很强很轻量,但是对于结构化数据 mysql具有天然优势。
这里只记录 使用mysql内存表替代redis的一个方案,只适用于某些特殊情况
但是 mysql 内存表有几个天然缺陷 Memory不支持行锁只支持表锁,只有InnoDB支持行锁。这就导致了大并发的时候,尤其是并发写入的时候 mysql的Memory引擎效率并不高
另外Memory不支持持久化储存,在宕机重启的情况下,虽然可以导入新数据。但是如果配置了主从同步会出现更多复杂问题。
为了规避这些问题,可以在以下场景式 使用。
最后采取的理想方式:
1、分库处理,库A 所有表使用InnoDB,配置好主从同步并用户储存所有数据。库B 只有部分表从库A复制的表,且全部是内存表,不进行主从同步。
2、mysql启动的时,库A部分表数据 完整复制到库B,或者应用端在查询不到数据的时候,自动复制数据过来。
3、定时同步库B数据到库A 以持久化保存
其他要注意的:
1、频繁写入的数据,依旧还是使用redis,这是redis的天然优势
2、关闭库B的 查询缓存(没有太大必要使用)
3、大量数据非经常查询的数据,放在
先看一个创建一个表 和复制一个表的基本语法
另外一个简单的解决方法 是使用 ramdisk (tmpfs),然后使用InnoDB 或者 MyISAM即可
然后定时备份 ramdisk(最好关停mysql后备份)
|
|
其实需要的是 优化mysql
频繁查询 较少写入的表的查询操作 开启查询缓存 这个比较好理解