是否可以在多个项目之间共享Memcache的单个实例。
假设我在一个项目的memcache中推送一个对象,我是否可以从另一个项目中检索相同的对象。?
发布于 2009-02-13 11:32:50
Memcache只是一个内存存储。它可以在多台机器上运行。没有理由两个完全不同的进程不能通过它相互通信。
让我澄清一下。您可以在一个或多个服务器上运行memcache。您可以将客户端配置为与一组特定的实例通信。您可以在同一主机上运行两个(或更多)不同的memcache进程(侦听不同的IP地址和/或端口),并且它们是完全独立的。
如果您的两个应用程序与同一实例通信,那么它们没有理由不能通信。
如果您与多个实例交谈并对数据进行分区(即将数据划分到不同的实例中),那么您的客户端需要知道从哪个实例获取数据或将数据放入哪个实例。如果您使用相同的客户端库(例如,您的两个客户端都是PHP5),那么这不是闹着玩的。如果它们不是一样的,那么你必须以某种方式处理这个问题。
如果您使用不同的技术,另一个问题是您必须考虑交换格式,因为PHP语言中的自定义序列化在Java或C#中的可读性不是很好。典型的选择是XML,甚至是JSON。
发布于 2009-02-13 11:50:03
可以,只要每个项目以相同的方式配置memcache节点,并以相同的方式为cache元素生成key,它们就可以共享数据。
发布于 2012-08-04 16:52:36
如果您担心安全问题(一个应用程序读取另一个应用程序的数据)或应用程序之间的缓存中毒,这些都是可能的。
如果您希望隔离应用程序之间的memcache,那么可以在一台服务器上运行多个memcached守护进程,每个守护进程使用服务器内存的一部分。每个实例运行在不同的端口号上。您可以使用防火墙规则来确保只有特定的应用程序服务器有权访问特定的memcache端口,以确保应用程序不能读取或毒害彼此的数据。
https://stackoverflow.com/questions/545615
复制相似问题