13、如果缓存数据在导出导入之间过期了,您又怎么处理这些
数据呢?
因此,批量导出导入数据并不像您想象中的那么有用。不过在一个场景倒是很有
用。如果您有大量的从不变化的数据,并且希望缓存很快热(warm)起来,批量
导入缓存数据是很有帮助的。虽然这个场景并不典型,但却经常发生,因此我们
会考虑在将来实现批量导出导入的功能。
如果一个 memcached 节点 down 了让您很痛苦,那么您还会陷入其他很多麻烦。
您的系统太脆弱了。您需要做一些优化工作。比如处理”惊群”问题(比如
memcached 节点都失效了,反复的查询让您的数据库不堪重负…这个问题在 FAQ
的其他提到过),或者优化不好的查询。记住,Memcached 并不是您逃避优化
查询的借口。
14、memcached 是如何做身份验证的?
没有身份认证机制!memcached 是运行在应用下层的软件(身份验证应该是应用
上层的职责)。memcached 的客户端和服务器端之所以是轻量级的,部分原因就
是完全没有实现身份验证机制。这样,memcached 可以很快地创建新连接,服务
器端也无需任何配置。
如果您希望限制访问,您可以使用防火墙,或者让 memcached 监听 unix domain
socket。
15、memcached 的多线程是什么?如何使用它们?
线程就是定律(threads rule)!在 Steven Grimm 和 Facebook 的努力下,
memcached 1.2 及更高版本拥有了多线程模式。多线程模式允许 memcached 能
够充分利用多个 CPU,并在 CPU 之间共享所有的缓存数据。memcached 使用一
种简单的锁机制来保证数据更新操作的互斥。相比在同一个物理机器上运行多个
memcached 实例,这种方式能够更有效地处理 multi gets。
如果您的系统负载并不重,也许您不需要启用多线程工作模式。如果您在运行一
个拥有大规模硬件的、庞大的网站,您将会看到多线程的好处。
简单地总结一下:命令解析(memcached 在这里花了大部分时间)可以运行在多
线程模式下。memcached 内部对数据的操作是基于很多全局锁的(因此这部分工
作不是多线程的)。未来对多线程模式的改进,将移除大量的全局锁,提高
memcached 在负载极高的场景下的性能。