【问题标题】:Redis basic concepts of reading and writingRedis读写基本概念
【发布时间】:2013-12-08 23:27:29
【问题描述】:

我有一个 mysql 数据库,里面有数百万条记录。我想使用 Redis 来提高性能。我已经阅读过 Redis 及其一些命令。
但我不明白redis是如何工作的。我的意思是,据我所知,我可以使用 Redis 来缓存 MySQL 数据。但是 Redis 将如何知道自上次缓存时间以来的新记录。 (我认为 Redis 也会从 mysql 获取数据以缓存它们 - 所以它是从 mysql 中选择的)

foreach插入mysql,redis也应该更新,我想不通直接从mysql中选择而redis也是从mysql中选择更新自己有什么区别。 (我不知道 Redis 是如何工作的,但我认为它是这样工作的)

有人能解释一下 Redis 缓存是如何工作的吗?

【问题讨论】:

  • 你误解了 Redis。 Redis 和 MySQL 之间没有联系。如果这有助于 Redis 的内存限制,您的应用程序可以选择在其中存储一些数据,但这是您的应用程序的功能,而不是 Redis 的功能。

标签: php mysql caching nosql redis


【解决方案1】:

在您的情况下,最好考虑由 Mysql db 支持的 Memcached。 http://dev.mysql.com/doc/refman/5.0/en/ha-memcached.html

但请注意,Redis 和 Memcached 仅适用于键值检索/存储。

【讨论】:

  • 所以 memcache 也缓存数据,假设它缓存用户的朋友,一分钟后,更新更改了用户的朋友列表。那么 memcached 是如何知道是否有新数据的呢? memcached 将返回它自己的缓存好友列表。怎么知道,mysql有更新?
  • 例如:对于像 facebook 这样的网站。它的数据库将每毫秒更新一次!所以 memcached 应该每毫秒获取一次更新!我无法得到它...
  • 如果你想在mysql中使用缓存,那么你必须忍受“最终一致性”和数据过期。您可以自定义缓存机制以每 X 秒刷新一次数据。其他选项反之亦然,在 Redis 中读取和写入数据,但启用持久性日志..并每 X 秒与 mysql 数据库同步。
【解决方案2】:

您的应用程序代码必须更新 Redis 以及 MySQL。为此,您可以调用 SET 以通过字符串键存储新数据。然后,您使用 GET 命令获取相同的数据。

您可以将 Redis 视为缓存,但真正的好处在于它的数据结构允许您从本质上实时修改缓存。这些适用于简单的列表/集合。使用 Redis 的 Webscale 系统通常使用 Redis 作为其面向 Web 的应用程序代码将调用的唯一系统。 MySQL 和其他 RDMBS 仅用于报告数据或历史存档。

【讨论】:

    【解决方案3】:

    一个选项是所谓的通过缓存写入。在这种情况下,应用程序同时使用相同的写入数据更新 Redis 和 Mysql,因此无论显示的数据来自何处(Redis/Mysql 更新 Redis),数据始终是等效的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 2014-09-22
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多