我有一个包含数百万条记录的mysql数据库。我想用Redis来提高性能。我已经读过Redis及其中的一些命令 但我无法理解redis的工作原理。我的意思是,据我所知,我可以使用Redis来缓存MySQL数据。但是,自从上次缓存时间以来,Redis将如何了解新记录。 (我认为Redis也会从mysql中获取数据来缓存它们 - 所以它是从mysql中选择的)
在mysql中插入foreach,redis也应该更新,我无法弄清楚直接从mysql中选择有什么区别,而Redis也是从mysql中选择更新自己。 (我不知道Redis是如何工作的,但我认为它是这样工作的)有人可以解释Redis缓存是如何工作的吗?
答案 0 :(得分:3)
您的应用程序代码必须更新Redis以及MySQL。您可以通过调用 SET 来按字符串键存储新数据。然后使用 GET 命令获取相同的数据。
您可以将Redis视为缓存,但它的真正好处在于它的数据结构允许您实质上修改缓存。这些适用于简单的列表/集合。使用Redis的Webscale系统经常使用Redis作为其面向Web的应用程序代码将调用的唯一系统。 MySQL和其他RDMBS仅用于报告数据或历史存档。
答案 1 :(得分:2)
在您的情况下,最好考虑由Mysql db支持的Memcached。 http://dev.mysql.com/doc/refman/5.0/en/ha-memcached.html
但请注意,Redis和Memcached仅适用于键值检索/存储。
答案 2 :(得分:2)
一种选择是所谓的Write Through Caching。在这种情况下,应用程序同时使用相同的写入数据更新Redis和Mysql,因此无论显示的数据来自何处(Redis / Mysql更新Redis),数据始终是等效的。