使用tmpfs的优点是我可以创建许多文件并拥有结构(目录),而在memcached中我只有一个键值系统,但我可以使用数组或对象来存储信息。如果有任何差异,CPU负载也很有趣。
谢谢。
以下是需要翻译的内容:
如果您不希望数据超出服务器内存,请使用tmpfs。
如果必须在服务器之间共享数据或想要存储更多数据以适应本地服务器RAM,则请使用memcached。
我对速度不是很了解,但以下是关于memcached需要考虑的几个问题:
最后,虽然我不确定tmpfs,但至少在以下情况下我会使用memcached:
为什么?因为它是:
无论是ramdisk还是memcached都非常快。
如果您在解决问题时使用MySQL,我认为速度并不重要。
个人而言,我更喜欢Redis而不是memcached。
以下是优缺点:
如果没有RAM,memcached可能会删除密钥。 Redis和文件永远不会这样做。
一些软件(如Joomla)在会话不在文件中(例如memcached / redis)时无法安装
memcache和redis都能够为多个php服务器提供服务,因此您将无法在集群中使用stick会话。
memcached比redis、ramdisk、memcachedb、mysql和文件系统会话更快。
ramdisk模拟正常的php会话行为,不需要安装任何东西。
如果ramdisk无法挂载,php将回退到文件系统并仍然可以工作(假设服务器引导)
如果memcached或redis停止工作,php会给出恶意错误并且根本无法启动。
希望这有所帮助。
对会话数据的写访问必须是原子的或由每个会话锁保护,否则它将被破坏。对于基于文件的会话,通过锁定文件来解决此问题,但不知道memcached如何处理。 使用单独的ext4分区并不像您想象的那样糟糕 - VFS将在RAM中缓存您的文件I/O,因此您可能不需要任何其他东西。 您可以微调ext4(在分区上)以缓存您的写入,因此您可以获得类似RAM大小的性能和持久性。 例如,您可以使用此设置获取writeback缓存和60秒窗口(延迟提交):
mount /dev/sda4 -t ext4 -o rw,data=writeback,nobh,commit=60
它将工作得很快,不会出现内存不足的情况,它将使用所有可用的内存,因为文件系统缓存是动态的。 尝试将4MB文件复制多次到第二个文件中(覆盖它),你会得到非常快的写入速度。
实际上,您可以使用memcacheDB来满足您的需求。