常考Memcached面试题总结(附答案)
2023-03-30 17:40:51
Memcached作为一种开源、高性能、分布式内存对象缓存系统,适用于各种需要缓存的场景。所以各大公司都需要程序员掌握Memcached的使用,那么面试官在面试中会如何考察考生对Memcached的掌握程度呢?今天我们来盘点一下常规考试。Memcached面试题,希望对有面试需求的朋友有所帮助。
1、什么是Memcached??它有什么作用?
答:Memcached是一款开源高性能的内存丝存软件,从名称上看 Mem 这意味着内存,而Cache意味着缓存。Memcached的作用:通过在预先规划的内存空间中临时存储数据库中的各种数据,减少业务对数据库的直接高并发访问,提高数据库的访问性能,加快网站集群的动态应用服务。
2、如何实现Memcached服务分布式集群?
答:Memcached集群不同于web服务集群。Memcached的所有数据总和都是数据库数据。每一个。每一个Memcached是部分数据。memcached的数据是其中的一部分mysql数据库的数据。
(1)程序端实现:加载所有程序mcip列表为key制作hash (一致性哈希算法),例如:web1 (key)===>对应 A,B,C,D,E,F,G…..几台服务器。
(2)负载均衡器:通过对key做hash(一致性哈希算法)一致性哈希算法的目的不仅是确保每个对象只需要一个相应的服务器,而且当节点关闭时,缓存服务器的更新和重新分配比例最小化。
3、Memcached 什么是服务特点和工作原理?
答:服务特点如下:完全基于内存缓存;节点相互独立;C/S 模式架构,C 语言编写总共有2000行代码;异步I/O 以libevent为事件通知机制的模型;以缓存数据为准 key/value键值存在于形式中;所有数据都存储在内存中,没有持久存储设计,重新启动服务器,内存中的数据将丢失;当内存中缓存的数据容量达到启动时设定的内存值时,自动使用删除过期缓存数据的LRU算法;存储的数据可以设置过期时间,使过期后的数据自动清除,服务本身不会监控过期,而是在访问时检查key时间戳,判断是否过期;memcache将设置的内存分块,然后将块分组,然后提供服务。
4、、memcached 是怎么工作的?
答:Memcached的魔力来自两个阶段的哈希。Memcached就像一个巨大的哈希表,存储了许多正确的表。任何数据都可以通过key存储或查询。
客户端可以存储多个数据在memcached上。查询数据时,客户端首先参考节点列表计算key的哈希值(阶段1哈希),然后选择节点;客户端将请求发送到选定的节点,然后通过内部哈希算法(阶段2哈希)查找真实数据。
5、memcached最大的优势是什么?
答:Memcached最大的优点是它带来了极好的水平可扩展性,尤其是在一个巨大的系统中。因为客户自己做了一次哈希,我们很容易增加很多 memcached进入集群。memcached之间没有相互通信,因此不会增加 memcached负载;无多播协议,无网络通信爆炸,memcached集群使用方便。基于memcached的基本原则,可以轻松构建不同类型的缓存架构。
6、memcached和服务器 local 与cache相比,cache有哪些优缺点?
答:首先local cache可以使用的内存容量受到(单台)服务器空闲内存空间的限制。local cache有点比memcached和query好 cache更好, 也就是说,它不仅可以存储任何数据,而且不会延迟网络访问。
local 查询cache数据更快。考虑highly common的数据放在common中 在localcache中。
local cache缺乏集体故障的特点。删除或更新memcached集群中的一个所有观察者都会注意到一个key。但是在local 在cache中, 我们只能通知所有服务器刷新cache(非常慢,不可扩展),或者只依赖缓存超时失效机制。
local cache 内存限制严重。
7、memcached 如何实现冗余机制?
答:冗余机制没有实现,Memcached 它应该是应用的缓存层。它的设计本身没有任何冗余机制。 如果是一个memcached 节点失去了所有数据,应该能够从数据源(如数据库)再次获取数据。
8、什么是memcached的多线程?如何使用它们?
答:线程是定律,允许多线程模式memcached 能够充分利用多个CPU,并在CPU之间共享所有缓存数据。memcached 使用简单的锁定机制来确保数据更新操作的相互排斥。与在同一物理机器上运行多个memcached相比 例如,这种方法可以更有效地处理它 multi gets。
简单总结一下,命令分析可以在多线程模式下运行。memcached内部的数据操作是基于大量的全局锁(所以这部分工作不是多线程的)。未来多线程模式的改进将移除大量的全局锁,提高memcached在高负载场景下的性能。
9、memcached 可接受的key最大长度是多少?
答:key的最大长度是250个字符。需要注意的是,250是memcached。 如果使用的客户端支持服务器端内部的限制”key 的前缀”或者类似的特征,那么 key(前缀+原始key)最大长度可超过250个字符,建议使用较短的字符 key,因为可以节省内存和带宽。
10、memcached对item的过期时间有什么限制?
答:过期时间最长30天。memcached 将传入的过期时间(时间段)解释为时间点后,一旦到达此时间点,memcached 把item放在一边 处于失效状态。
以上的10道Memcached面试题,都在各大互联网公司。java程序员面视时出现过的,可以说是常考Memcached面试题。各位java程序员