Multithreading memcache和redis的内部工作方式有何不同

Multithreading memcache和redis的内部工作方式有何不同,multithreading,caching,memory-management,redis,memcached,Multithreading,Caching,Memory Management,Redis,Memcached,redis如何在内部执行以下功能 内存管理: 我知道memcache使用固定大小和帧以及 框架内固定大小的平板。redis内存管理有多不同 对于逐出,memcache使用LRU。对于逐出,每个memcache节点都有映射和双链表。在读写操作中,两个数据结构都是使用全局锁访问的。再说一遍,Redis是如何做到这一点的?由于这些数据结构不需要Redis中的单线程锁定 首先,我建议你通过。 在这个stackoverflow答案中,您可以看到第一点“内存管理”的答案以及许多其他详细信息。 关于第二点,我

redis如何在内部执行以下功能

  • 内存管理: 我知道memcache使用固定大小和帧以及 框架内固定大小的平板。redis内存管理有多不同
  • 对于逐出,memcache使用LRU。对于逐出,每个memcache节点都有映射和双链表。在读写操作中,两个数据结构都是使用全局锁访问的。再说一遍,Redis是如何做到这一点的?由于这些数据结构不需要Redis中的单线程锁定

  • 首先,我建议你通过。 在这个stackoverflow答案中,您可以看到第一点“内存管理”的答案以及许多其他详细信息。 关于第二点,我想告诉您,您可以检查redis的默认配置文件,从中可以管理不同的可用行为

    以下章节中提到了此代码段:

    希望它能帮助你。如果我遗漏了什么,请告诉我

    # MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
    # is reached. You can select among five behaviors:
    #
    # volatile-lru -> remove the key with an expire set using an LRU algorithm
    # allkeys-lru -> remove any key according to the LRU algorithm
    # volatile-random -> remove a random key with an expire set
    # allkeys-random -> remove a random key, any key
    # volatile-ttl -> remove the key with the nearest expire time (minor TTL)
    # noeviction -> don't expire at all, just return an error on write operations