何时使用Redis而不是MySQL来执行PHP应用程序?
我一直在看Redis。 它看起来很有趣。 但是从实际的angular度来看,在什么情况下使用Redis来处理MySQL会更好?
忽略了整个NoSQL vs SQL的争论,我认为最好的方法就是把它们结合起来。 换句话说,对于系统的某些部分(复杂查找,事务)和其他(性能,计数器等)的redis,使用MySQL。
根据我的经验,与可伸缩性(很多用户…)有关的性能问题最终会迫使您添加某种caching以从MySQL服务器中删除负载,而predis / memcache等则非常好。
我不是Redis的专家,但从我所收集的信息来看,两者都非常不同。 Redis:
- 不是一个关系数据库(没有花哨的数据组织)
- 在内存中存储所有内容(更快,更less的空间,可能不太安全,以防止崩溃)
- 广泛部署在各种networking主机(如果你不托pipe自己)
我想你可能想要使用Redis,当你有一个小数量的数据,不需要MySQL提供的关系结构,并且需要快速访问。 例如,这可以是需要经常和快速访问的dynamicweb界面中的会话数据。
Redis也可以用作一些MySQL数据的caching,这些数据会经常被访问(例如:当用户login时加载它)。
我认为你问的是错误的方法,你应该问自己哪一个更适合应用程序,而不是哪个应用程序适合于一个系统;)
MySQL是一个关系数据存储。 如果configuration(例如使用innodb表),MySQL是一个可靠的数据存储提供ACID交易。
Redis是一个NoSQL数据库。 它更快( 如果使用正确 ),因为它以可靠的速度进行交易( 很less用fsync运行,因为这会显着损害性能 )和事务( 可以用SETNX慢慢地进行近似处理 )。
Redis具有一些非常整洁的function,例如集合,列表和sorting列表。
Redis上的这些幻灯片列举了统计信息收集和会话pipe理。 还有一个用redis编写的twitter clone ,但这并不意味着twitter使用redis( twitter使用的是大量cachingmemcache的MySQL)。
MySql –
1)结构化数据2)ACID 3)繁重的交易和查找。
Redis –
1)非结构化数据2)简单而快速的查找。 例如 – 会话令牌3)将其用于caching层。