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 频繁查询 较少写入的表的查询操作 开启查询缓存 这个比较好理解

2022年 8月 30日 Read all