文章目录
-
-
-
- 1、memcached是怎么工作的?
- 2、memcached最大的优势是什么?
- 3、memcached和MySQL的querycache相比有什么优缺点?
- 4、memcached和服务器的localcache(比如PHP的APC、mmap文件等)相比,有什么优缺点?
- 5、memcached的cache机制是怎样的?
- 6、memcached如何实现冗余机制?
- 7、memcached如何处理容错的?
- 8、如何将memcached中item批量导入导出?
- 9、我需要把memcached中的item批量导出导入,怎么办?
- 10、memcached是如何做身份验证的?
- 11、memcached的多线程是什么?如何使用它们?
- 12、memcached能接受的key的最大长度是多少?
- 13、memcached对item的过期时间有什么限制?
- 14、memcached最大能存储多大的单个item?
-
-
1、memcached是怎么工作的?
Memcached的神奇来自两阶段哈希(two-stagehash)。Memcached就像一个巨大的、存储了很多<key,value>对的哈希表。通过key,可以存储或查询任意的数据。
客户端可以把数据存储在多台memcached上。当查询数据时,客户端首先参考节点列表计算出key的哈希值(阶段一哈希),进而选中一个节点;客户端将请求发送给选中的节点,然后memcached节点通过一个内部的哈希算法(阶段二哈希),查找真正的数据(item)。
举个列子,假设有3个客服端123台memcachedA,B,CClient1想把数据"barbaz”以key“foo"存储。Client1首先参考节点列表
(A,B,C)计算key"foo”的哈希值,假设memcachedB被选中。接着,Client1直接connect到memcachedB通过key"foo"把数据"barbaz"存储进去。Client2使用与Client1相同的客户端库億味着阶段一的哈希算法相同),也拥有同样的memcached列表(A,B,C)。于是,经过相同的哈希计算(阶段一),Client2计算出key"foo"在memcachedB上,然后它直接请求memcachedB,得到数据"barbaz"。各种客户端在memcached中数据的存储形式是不同的(perlStor