不要用Redis来做什么

不要用Redis来做什么

前面说了Redis的应用场景,可以说缓存技术(不仅是Redis)主要是为提高应用性能,缓解数据库压力而诞生的。但是每种技术都有适合自己的应用场景,也会有不适合自己的场景,没有万金油的技术。那么那些场景不适合使用Redis呢?

1,从数据规模角度

从数据规模的角度来看,数据可以分为大规模数据和小规模数据。我们知道Redis是将数据存在内存中,目前来讲,相对于磁盘而言内存还是比较贵的,如果将大规模数据全放在内存里,成本上考虑还是不合适的。而且据我所知,现在运维上内存扩容还是要停机的,磁盘可以在线扩容。

2,从冷热数据的角度

很多业务数据可以分为冷数据和热数据。热数据就是应用需要频繁使用的数据。如果将大量的冷数据放在内存里,那就是对内存的一种浪费。所以应该从业务场景上区分出冷热数据,区别对待。只将热数据放在内存中,加速数据读写,也可降低后端存储的压力。

另外在使用上,Redis的运维同样重要。很多使用 Redis 的开发者认为只要会用 API 开发相应的功能就可以,更有甚者认为 Redis 就是 get、set、del,不需要知道 Redis 的原理。很多线上的故障和问题都是由于完全把 Redis 当做黑盒造成的,如果不了解 Redis 的单线程模型,有些开发者会在有上千万个键的 Redis 上执行 keys*操作,如果不了解持久化的相关原理,会在一个写操作量很大的 Redis 上配置自动保存 RDB。而且在很多公司内只有专职的关系型数据库 DBA,并没有 NoSQL 的相关运维人员,也就是说开发者很有可能会自己运维 Redis,对于 Redis 的开发者来说既是好事又是坏事。站在好的方面看,开发人员可以通过运维 Redis 真正了解 Redis 的一些原理,不单纯停留在开发上。站在坏的方面看,Redis 的开发人员不仅要支持开发,还要承担运维的责任,而且由于运维经验不足可能会造成线上故障。但是从实际经验来看,运维足够规模的 Redis 会对用好 Redis 更加有帮助。


分享到:


相關文章: