我一直在看Redis。看起来很有趣。但是从实际的角度来看,在哪种情况下最好使用Redis而不是MySQL?
key_buffer_size
。这可能不会取代redis,但是请记住,使用这些东西可以使您更接近NoSQL的性能。您可以在将Redis添加到堆栈之前考虑这些因素。
我一直在看Redis。看起来很有趣。但是从实际的角度来看,在哪种情况下最好使用Redis而不是MySQL?
key_buffer_size
。这可能不会取代redis,但是请记住,使用这些东西可以使您更接近NoSQL的性能。您可以在将Redis添加到堆栈之前考虑这些因素。
Answers:
我不是Redis专家,但是从我收集的数据来看,两者截然不同。Redis:
我认为当您的数据量很少而不需要MySQL提供的关系结构并且需要快速访问时,您可能希望使用Redis。例如,这可能是动态Web界面中的会话数据,需要经常且快速地对其进行访问。
Redis还可以用作某些MySQL数据的缓存,这些MySQL数据将经常被访问(即:当用户登录时加载它)。
我认为您是在以错误的方式提出这个问题,您应该问自己哪个更适合某个应用程序,而不是哪个应用程序适合系统;)
MySQL是一个关系数据存储。如果进行了配置(例如使用innodb表),则MySQL是提供ACID事务的可靠数据存储。
Redis是一个NoSQL数据库。它更快(如果正确使用),因为它以可靠的速度进行交易(很少使用fsync运行,因为这会严重损害性能)和事务(可以通过SETNX缓慢地近似)。
Redis具有一些非常简洁的功能,例如集合,列表和排序列表。
这些关于Redis的幻灯片以统计信息收集和会话管理为例。还有一个用redis编写的twitter克隆示例,但这并不意味着twitter使用redis( twitter使用具有大量内存缓存的MySQL)。
MySQL-
1)结构化数据2)ACID 3)繁重的事务和查找。
Redis-
1)非结构化数据2)简单快速的查找。例如-会话令牌3)将其用于缓存层。
Redis,SQL(+ NoSQL)有其优点和缺点,并且经常并存:
(不同的SQL / NoSQL解决方案可能会有所不同。您应该阅读CAP定理和ACID,以了解为什么一个系统不能同时为您提供全部功能)
根据官方网站的说法,Redis是一个开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。实际上,Redis是高级键值存储。实际上,它具有超高的吞吐率,而且速度超快,因为它每秒可以执行约110000个SET,每秒执行约81000个GET。它还支持一组非常丰富的数据类型来存储。实际上,Redis每次都将数据保留在内存中,但也将其保留在磁盘上。因此,这需要权衡:惊人的速度和数据集的大小限制(根据内存)。在本文中,为了有一些与MySQL相比的基准,我们将仅使用Redis作为缓存引擎。
在这里阅读:Redis vs MySQL基准测试