在分布式系统开发中,系统与系统之间都属于进程级别,缓存系统也能跨进程叫分布式缓存,市面上分布式缓存技术有 Memcached 和 Redis。 性能上都很出色,具体到细节,由于 Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上 Redis 在存储小数据时比 Memcached 性能更高。
而在 100K 以上的数据中,Memcached 性能要高于 Redis,虽然 Redis 最近也在存储大数据的性能上进行优化,但是比起 Memcached,还是稍有逊色。
MemCached 可以修改最大内存,采用 LRU 算法。Redis 增加了 VM 的特性,突破了物理内存的限制。
MemCached 数据结构单一,仅用来缓存数据,而 Redis 支持更加丰富的数据类型,也可以在服务器端直接对数据进行丰富的操作, 这样可以减少网络 IO 次数和数据体积。
任何一个查询都不应该成为它们每秒可以提供的查询的瓶颈
。MemCached 不支持数据持久化,断电或重启后数据消失,所以只能作为缓存使用,但其稳定性是有保证的。
Redis 支持数据持久化和数据恢复,允许单点故障,但是同时也会付出性能的代价。这样启动更快,不需要从关系数据库加载数据,从自己的 dump 文件加载即可。
Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写。
Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统。
没有场景,就难以选型,但Redis在很多事情上都是有意义的,因为即使你不想将其用作数据库,也可以通过使用更多功能来解决更多问题,不只是缓存,甚至是消息队列,排名等。
参考