持续输出面试题之分布式数据库--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的机制。dom

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

1MB。若是数据大于1MB,能够考虑在客户端压缩或拆分到多个key中。socket

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

线程就是定律;memcached1.2及更高版本拥有了多线程模式。多线程模式容许 memcached可以充分利用多个CPU,并在CPU之间共享全部的缓存数据。 memcached使用一种简单的锁机制来保证数据更新操做的互斥。相比在同一个物理机器上运行多个 memcached实例,这种方式可以更有效地处理 multi gets。
若是系统负载并不重,也许不须要启用多线程工做模式。若是您在运行一个拥有大规模硬件的、庞大的网站,将会看到多线程的好处。分布式

简单地总结一下:命令解析,memcached在这里花了大部分时间能够运行在多线程模式下。 memcached内部对数据的操做是基于不少全局锁的(所以这部分工做不是多线程的)。将来对多线程模式的改进,将移除大量的全局锁,提升 memcached在负载极高的场景下的性能。memcached