有些“上古”程序员为什么一直坚持反对使用redis?
原文链接:wukong.com/answer/6820743715972186375/
项目本身不需要使用缓存
缓存是为了将热点数据存放到内存中,减少应用系统与数据库交互的次数以及传输,从而提高系统的响应时间。在高并发系统中,缓存技术是应用非常普遍的技术,因为系统最终的瓶颈都会落到数据库层面。通过缓存热点数据或者变化非常小的数据,前端请求可以直接查询内存获取到数据,而不用查询数据库,这样可以有效提高系统的并发性能。但是在一些小型应用系统或者后台系统,其并发数和数据量本省就非常小,所以完全没有必要使用Redis之类的缓存技术。因为使用了Redis,必然就要去搭建Redis的服务,并且维护它,这无形中又是成本的增加。所以,这可能是有些程序员不喜欢使用Redis的原因,系统特性所决定的。不是说任何一个系统都要上缓存技术。
有可替代的其它缓存技术
缓存技术非常多,例如Memcached、Ehcache、Aerospike等技术。尤其是Ehcache,可以与Java无缝集成,无需像Redis一样搭建Redis Server,数据直接缓存在应用所在的主机上,这对于单机应用或者不需要共享数据的集群应用很适用。同时,Java中我们使用静态Map、集合都可以作为缓存解决方案。而Memcached和Aerospike等缓存技术,他们的设计和使用都比Redis要简单的多,如果我们只是简单使用缓存,那Memcached是最佳选择。Redis的功能更为强大,性能更好,它补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。
结论
所以,要不要用Redis需要看项目本身的特性,如果系统并发小、数据量小,缓存技术没有必要使用,一个Mysql就完全可以搞定。其次,需要考虑成本,可以用Ehcache解决的,就不用Memcached,可以用Memcached解决的,就不用Redis。至于Aerospike,阿迈达在用,感觉非常强悍,TPS可以到10万左右,谁用谁知道。