Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在memcache中使用相同的键存储不同的值?_Java_Google App Engine_Memcached - Fatal编程技术网

Java 如何在memcache中使用相同的键存储不同的值?

Java 如何在memcache中使用相同的键存储不同的值?,java,google-app-engine,memcached,Java,Google App Engine,Memcached,我的应用程序在App Engine上运行,我的应用程序的不同部分需要使用相同的密钥将不同类型的值存储到memcache。在应用程序中,有两个类正在缓存以Link作为键的值。一个类存储Boolean,另一个ArrayList作为值。但是,当它们需要使用相同的链接时,现在存在冲突。为了避免这种情况,我提出了3种选择: 使用Strings作为键。将Link对象转换为字符串,并在它们前面加上在将值放入memcache和获取值时使用的类名 使用memcache的名称空间功能来区分键。然而,名称空间通常用于

我的应用程序在App Engine上运行,我的应用程序的不同部分需要使用相同的密钥将不同类型的值存储到memcache。在应用程序中,有两个类正在缓存以
Link
作为键的值。一个类存储
Boolean
,另一个
ArrayList
作为值。但是,当它们需要使用相同的
链接时,现在存在冲突。为了避免这种情况,我提出了3种选择:

  • 使用
    String
    s作为键。将
    Link
    对象转换为字符串,并在它们前面加上在将值放入memcache和获取值时使用的类名
  • 使用memcache的名称空间功能来区分键。然而,名称空间通常用于多租户目的,因此它似乎不正确
  • 在应用程序的不同部分为密钥创建包装器类。但这增加了复杂性

  • 我计划使用第一个选项,因为它是最简单的一个。我的其他选择是什么?有什么最佳实践吗?这是我第一次使用memcache,我不知道该走哪条路

    为什么不将整个对象或表示该对象的字典存储在memcache中,并在一个键中存储所需的所有值?@TimHoffman:一位同事也建议这样做。但是,这两个类是完全不相关的,在这种情况下,不必要的信息将暴露给这两个类。如果
    Link
    对象不容易转换为字符串(反之亦然),我会这样做,而不是选择#1。