我一直在看Redis.看起来很有趣.但从实际角度来看,在什么情况下使用Redis而不是MySQL?
忽略整个NoSQL与SQL争论,我认为最好的方法是将它们结合起来.换句话说,对于系统的某些部分(复杂的查找,事务)使用MySQL,对其他部分使用redis(性能,计数器等).
根据我的经验,与可伸缩性(许多用户......)相关的性能问题最终会迫使您添加某种缓存以从MySQL服务器中删除负载,而redis/memcached非常擅长.
我不是Redis专家,但从我收集的内容来看,两者都非常不同.Redis:
不是关系数据库(没有奇特的数据组织)
将所有内容存储在内存中(更快,更少的空间,在发生崩溃时可能更不安全)
不太广泛地部署在各种webhosts上(如果你没有自己托管)
我想你可能想要使用Redis,因为你有一小部分数据不需要MySQL提供的关系结构,并且需要快速访问.例如,这可以是动态web界面中的会话数据,其需要经常且快速地访问.
Redis还可以用作某些MySQL数据的缓存,这些数据将被频繁访问(即:在用户登录时加载它).
我认为你问的问题是错误的,你应该问自己哪一个更适合应用程序,而不是哪个应用程序适合系统;)
MySQL是一个关系数据存储.如果配置(例如使用innodb表),MySQL是一个提供ACID事务的可靠数据存储.
Redis是一个NoSQL数据库.它更快(如果使用正确),因为它可靠地交换速度(很少使用fsync运行,因为这会极大地损害性能)和事务(可以近似 - 缓慢 - 使用SETNX).
Redis有一些非常简洁的功能,如集合,列表和排序列表.
Redis上的这些幻灯片列出了统计信息收集和会话管理的示例.还有一个用redis编写的twitter 克隆作为例子,但这并不意味着twitter使用redis(twitter使用带有大量memcache缓存的MySQL).
MySql -
1)结构化数据2)ACID 3)重交易和查找.
Redis -
1)非结构化数据2)简单快速的查找.例如 - 会话的标记3)将其用于缓存层.