乐趣区

关于java:持续输出面试题之分布式数据库Memacache

开篇介绍

大家好,我是 Java 最全面试题库 的提裤姐,明天这篇是分布式技术的第三篇,次要介绍分布式 Memcache;在后续,会沿着第一篇开篇的常识线路始终总结上来,做到日更!如果我能做到百日百更,心愿你也能够跟着百日百刷,一百天养成一个好习惯。

memcached 的 cache 机制是怎么的?

Memcached 次要的 cache 机制是 LRU 最近起码用算法 + 超时生效
当存数据到 memcached 中,能够指定该数据在缓存中能够呆多久;如果 memcached 的内存不够用了,过期的 slabs 会优先被替换,接着就轮到老的未被应用的 slabs。

memcached 如何实现冗余机制?

不实现。Memcached 应该是利用的缓存层。

它的设计自身就不带有任何冗余机制。如果一个 Memcached 节点失去了所有数据,应该能够从数据源 (比方数据库) 再次获取到数据。特地留神,利用应该能够容忍节点的生效。不要写一些蹩脚的查问代码,寄希望于 memcached 来保障所有,如果放心节点生效会大大减轻数据库的累赘,那么能够采取一些方法。比方能够减少更多的节点(来缩小失落一个节点的影响),热备节点(在其余节点 down 了的时候接管 ip 等等)。

memcached 是如何做身份验证的?

没有身份认证机制;
memcached 是运行在利用上层的软件 (身份验证应该是利用下层的职责)。memcached 的客户端和服务器端之所以是轻量级的,局部起因就是齐全没有实现身份验证机制。这样,memcached 能够很快地创立新连贯,服务器端也无需任何配置。
如果心愿限度拜访,能够应用防火墙,或者让 memcached 监听 unix domain socket.

memcached 能承受的 key 的最大长度是多少?

key 的最大长度是 250 个字符。
须要留神的是,250 是 memcached 服务器端外部的限度,如果应用的客户端反对 key 的前缀或相似个性,那么 key(前缀 + 原始 key)的最大长度是能够超过 250 个字符的。举荐应用较短的 key,因为能够节俭内存和带宽。

memcached 对 item 的过期工夫有什么限度?

过期工夫最大能够达到 30 天。memcached 把传入的过期工夫 (时间段) 解释成工夫点后,一旦到了这个工夫点,memcache 就把 item 置为生效状态。这是一个简略但 obscure 的机制。

memcached 最大能存储多大的单个 item?

1MB。如果数据大于 1MB,能够思考在客户端压缩或拆分到多个 key 中。

memcached 的多线程是什么? 如何应用它们?

线程就是定律;memcached1.2 及更高版本领有了多线程模式。多线程模式容许 memcached 可能充分利用多个 CPU,并在 CPU 之间共享所有的缓存数据。memcached 应用一种简略的锁机制来保证数据更新操作的互斥。相比在同一个物理机器上运行多个 memcached 实例,这种形式可能更无效地解决 multi gets。
如果零碎负载并不重,兴许不须要启用多线程工作模式。如果您在运行一个领有大规模硬件的、宏大的网站,将会看到多线程的益处。

简略地总结一下:命令解析,memcached 在这里花了大部分工夫能够运行在多线程模式下。memcached 外部对数据的操作是基于很多全局锁的(因而这部分工作不是多线程的)。将来对多线程模式的改良,将移除大量的全局锁,进步 memcached 在负载极高的场景下的性能。

退出移动版