Redis为什么会这么火?


#1

他的应用场景是什么?没有别的解决方案吗?还是别的解决方案不够好?

大家也来说说自己一般在什么时候用redis,以及选择redis的理由.


#2

这个问题啊,怎么说呢, redis 火起来,就是因为满足了一个需求。什么需求呢?下面说一下。

在 web 开发中,数据库这种东西是用来保存用户数据的。然而,有一类数据,它并不是用户数据,而是一类需要频繁使用的临时数据,这种临时数据,丢失了也没有什么问题。可以马上重新生成。

这种数据的典型就是 各种缓存,用户的cookie。

这类数据因为丢失可以重新生成,所以实际上并没有存入“SQL"的必要性,属于杀鸡用牛刀的类型。SQL的事务特点决定了,它处理这种数据性能非常的不理想。

于是各种“内存数据库” 就出来了。

也就是说,内存数据库的诞生,是因为 web 开发者有强烈的对“临时数据”的存储需求。

那么,这类数据,在传统语言里是怎么解决的呢? 答案是直接放内存里。 那么为啥web开发者不是直接放内存里,而是要依赖数据库呢?

其实这个是由 HTTP 的特点决定的。 HTTP 是个无状态的协议,于是因此催生的 web 语言,都围绕这个前提设计的。

于是在 web 语言里,你不能假定内存里有任何和上一次请求相关的内容。所有的“状态”都必须写入外部的“数据库”。

所以, redis 这种内存数据库,实际上正是因为其“内存”的特点,性能上取代了 SQL 作为 web 的临时数据库,才愈来愈火。 火的是因为web开发本身很火,然后 redis 又正好在性能上相比 sql 有着决定性优势。

然而,很奇怪的是,很多非 web 开发者看不清形势,盲目跟风,将自己的项目套到 redis 上,就因为“redis很火”。 这不能不说是个悲哀。


#3

博士说的好!!

redis 就是垃圾!


#4

至少Redis挂名内存数据库,使用者至少知道跑在内存里耗资源,不会也很难全盘把SQL给替代了。MongoDB这样的异端才可怕,新手一上来就要用NoSQL全盘否定传统SQL数据库。 话说拿Redis来做服务器端session管理还是不错的。


#5

用 std::map 做 session 管理不是更好?


#6

我也想啊!但不能总要求server端全C++是不是。且要把session管理跑在独立的server上,总需要个service来完成吧。


#7

为什么要把 session 管理放独立的机器上?


#8

应用做大了,当然要把不同业务分担到不同的server上,session独立出来管理很正常啊,和把数据库层,全文索引检索,邮件通信神马的分离开一个意思。


#9

web server 通常是集群…放map里随便重启的话对客户会有影响


#10

… … 为啥会随便重启. redis 也不能随便重启的