mysql - 限时存储数据: memcache vs mysql

标签 mysql memcached datastore

我需要在有限的时间内(最多 24 小时)存储一些数据,在这段时间内可能会或可能不会访问这些数据。我可以同时使用 memcache 和 mysql -

  1. Memcache :在 memcache 中设置一个具有过期时间的 key 。这将是非持久的,但我可以处理它。访问数据将会更快。

  2. MySql:创建一个表来存储此数据并维护一个作业以在到期时间后继续存档此数据。相对来说会慢一些。

我应该使用哪一个?这是内存缓存的有效用例吗? (因为memcache用于存储访问频率很高的数据)

请建议是否有其他选项可用于存储此类临时数据。

最佳答案

我认为 memcache 对于你的情况来说不是很可靠。 Memcache 是一个缓存,如果对象开始变满,缓存可能会逐出一个对象,而且您不会知道该对象已被删除。因此,如果该对象不存在,您无法确定它不存在是因为驱逐还是因为您实际上没有将其放在那里。

此外,如果您大量使用memcache并且memcache的利用率约为75%(这意味着您的memcache已满),那么我建议不要使用memcache。由于数据未被使用,因此很有可能会被快速驱逐。如果这对您来说不是问题,那么您可以使用内存缓存。

您可以将这些数据存储在mysql中。这是一个不错的选择。

您可以尝试的另一个选项是 mongodb 或其他一些数据库,您可以在其中获得 ttl(生存时间)选项。优点是您可以确定在 ttl 之前没有驱逐。

关于mysql - 限时存储数据: memcache vs mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45355552/

相关文章:

mysql - 如何恢复始终作为列生成的mysql备份?

php - 将文件保存到 xampp htdocs 目录时权限被拒绝

php - 无法打开 pdf 文件

ruby-on-rails-3 - 使用 Memcached/Dalli 从缓存中排除图像

api - 如何将搜索结果与数据库集成

Azure ML 作业开始失败,出现 DataAccessError : Invalid secret token header

mysql - 将 mysql 值赋给变量 inline

python - python 中的内存缓存

extjs - 使代理使用扩展的 Ext.data.Operation

jvm - 如何在 Windows 上为我的 JDK 分配 8 GB(而不是 1 GB)RAM