2

当我对缓存数据库进行获取时,我的缓存数据库中有一些数据,如果键包含字母和数字或数字组合,我能够获取数据,如果它是只有数字的单个键,我不是即使我能够查看列表中的数据,也能够检索数据。

Map (ele): list
2222222 = 
200:20:2:2:1:1:Thu Feb 02 00:00:00 2012:2:Thu Feb 02 00:00:00 2012:Thu Feb 02 00:00:00 2012

GC2 = 
200:20:2:2:1:1:Thu Feb 02 00:00:00 2012:2:Thu Feb 02 00:00:00 2012:Thu Feb 02 00:00:00 2012

Map (ele): get GC2
 200:20:2:2:1:1:Thu Feb 02 00:00:00 2012:2:Thu Feb 02 00:00:00 2012:Thu Feb 02 00:00:00 2012

Map (ele): get 2222222
null

当我在 get 中只给出数字时,我得到了 null。

有什么想法吗?

4

1 回答 1

2

我自己想通了,如果我们将键定义为 String 类型,并且由于一致性服务器的内部工作,它只包含数字,它返回 null。

简而言之

键定义为字符串 - 键包含字母数字 - WORKS

键定义为字符串 - 键仅包含字母 - WORKS

定义为字符串的键 - 键仅包含数字 - 不起作用

所以我所做的是,在将数据放入缓存之前,我检查了键是否只包含数字

if (code.matches("[0-9]+")) 

如果是,则将密钥存储为整数,否则将其存储为字符串。

现在我能够检索所有情况的值。

另一种解决方案 -

而不是将密钥存储为整数,即使它是存储为字符串的数字,然后在执行 get 时

得到\111

这也检索正确的值

于 2013-03-27T09:28:34.610 回答