• 缓存中间件技术选型Memcached、MongoDB、Redis


    搜搜补补加上自己的理解梳理了一下 市面上比较流行的缓存中间件(Memcached、MongoDB、Redis)进行简单对比。

    一般从几个维度来考虑:

    • 数据结构
    • 持久化
    • 集群
    • 性能
    MemcachedMongoDBRedis
    数据结构简单key-value非常全面,文档型数据库多种String、list、set、hash、bitmap
    持久化不支持支持支持
    集群客户端自己控制支持支持
    性能中等

    在我了解,目前市面上通用的缓存中间件技术是 Redis,使用 MongoDB 的公司最少,因为它只是一个数据库,由于它的读写速度与其他数据库相比较快,所以人们才把它当作类似缓存的存储

    Redis为什么比Memcached快呢?
    几个方面:

    • **数据结构:**举个例子,在使用 Memcached 保存 List 缓存对象的过程中,如果我们往 List 增加一条数据,首先需要读取整个 List ,再反序列化塞入数据,接着再序列化存储回 Memcached。而对于 Redis 而言,它仅仅是一个 Redis 请求,会直接帮我们塞入数据并存储,简单快捷。
    • **持久化:**对于 Memcached 来说,一旦系统宕机数据就会丢失。通过 Memcached 的官方文档得知,1.5.18 以后 Memcached 支持 restartable cache,其实现原理是重启时 CLI 先发信号给守护进程,然后守护进程将内存持久化至一个文件中,系统重启时再从那个文件恢复数据。不过,这个设计仅在正常重启情况下使用,意外情况还是不处理
    • **集群:**Memcached 的集群设计非常简单,客户端根据 Hash 值直接判断存取的 Memcached 节点。而 Redis 的集群因在高可用、主从、冗余、failover 等方面都有所考虑,所以集群设计相对复杂些,属于较常规的分布式高可用架构。

    所以 Redis 作为缓存的中间件相对来说是比较好的。

  • 相关阅读:
    Redis key(BigKey、MoreKey)的存储策略
    iPhone 14四款机型电池容量详细参数揭秘
    C++ std::default_random_engine的使用
    Jmeter接口测试 —— jmeter对图片验证码的处理
    【数学建模】熵权法
    如何将html转化为pdf
    SQL之join的简单用法
    MFC中如何自动调整CCombobox宽度
    笔试算法(一)
    OpenCV For Unity Mat容器的创建与矩阵操作基础
  • 原文地址:https://blog.csdn.net/daohangtaiqian/article/details/126153469