Java 如何在memcache中使用相同的键存储不同的值?
我的应用程序在App Engine上运行,我的应用程序的不同部分需要使用相同的密钥将不同类型的值存储到memcache。在应用程序中,有两个类正在缓存以Java 如何在memcache中使用相同的键存储不同的值?,java,google-app-engine,memcached,Java,Google App Engine,Memcached,我的应用程序在App Engine上运行,我的应用程序的不同部分需要使用相同的密钥将不同类型的值存储到memcache。在应用程序中,有两个类正在缓存以Link作为键的值。一个类存储Boolean,另一个ArrayList作为值。但是,当它们需要使用相同的链接时,现在存在冲突。为了避免这种情况,我提出了3种选择: 使用Strings作为键。将Link对象转换为字符串,并在它们前面加上在将值放入memcache和获取值时使用的类名 使用memcache的名称空间功能来区分键。然而,名称空间通常用于
Link
作为键的值。一个类存储Boolean
,另一个ArrayList
作为值。但是,当它们需要使用相同的链接时,现在存在冲突。为了避免这种情况,我提出了3种选择:
使用String
s作为键。将Link
对象转换为字符串,并在它们前面加上在将值放入memcache和获取值时使用的类名李>
使用memcache的名称空间功能来区分键。然而,名称空间通常用于多租户目的,因此它似乎不正确
在应用程序的不同部分为密钥创建包装器类。但这增加了复杂性
我计划使用第一个选项,因为它是最简单的一个。我的其他选择是什么?有什么最佳实践吗?这是我第一次使用memcache,我不知道该走哪条路 为什么不将整个对象或表示该对象的字典存储在memcache中,并在一个键中存储所需的所有值?@TimHoffman:一位同事也建议这样做。但是,这两个类是完全不相关的,在这种情况下,不必要的信息将暴露给这两个类。如果Link
对象不容易转换为字符串(反之亦然),我会这样做,而不是选择#1。