为什么不像memcached那样使用MySQL?

Ita*_*vka 3 mysql memcached caching memory-table memcachedb

出于同样的原因,在一个应用程序中同时使用NoSQL和RDBMS是有意义的,除了NoSQL缓存之外,我还有一个RDBMS缓存.

我正在考虑使用MySQL服务器和所有使用内存引擎的表.

这种方法有什么警告吗?

只是为了澄清,我建议这里仅使用MySQL服务器进行缓存,而不是用于我的应用程序的实际数据存储.

bas*_*sh- 5

内存表完全存储在内存中,因此速度非常快.

它使用的哈希索引也非常快,非常适合临时表和查找.

内存表具有表级锁,因此如果需要并发,则这是一个问题

没有交易

当服务器关闭或崩溃时,所有行都会丢失

虽然表定义保持不变,但数据将全部消失.

您可能想查看Memory Engine上的官方文档

编辑:

内存存储引擎是缓存目的的理想选择.

以下是Memory Engine适用的一些内容:

  • 查找/映射表
  • 缓存定期添加数据的结果
  • 用于数据分析目的
  • 会话管理
  • 低延迟操作
  • 比其他策略更好,例如CREATE TEMPORARY TABLEMemory表持续存在(如果这是你需要的)

有一些负面因素:

  • 它不支持TEXT或BLOB列,如果发生这样的事件,表将被转换为磁盘上的MyISAM .
  • 该表不应该包含太多数据,因为它占用了可以分配给索引/查询缓存的资源

总而言之,如果您需要缓存,内存引擎应该是您的最佳选择.