如何使用jedis设置映射到缓存

时间:2015-12-28 03:23:21

标签: java dictionary jedis

我更新使用jedis而不是spring-data-redis。 现在我想用Jedis设置Map缓存。 我该怎么办?谁能帮我?谢谢!

3 个答案:

答案 0 :(得分:0)

让我们在java中有一个复合映射M(HashMap<String,Map<String ,String>>的实例),其值为:

A -> (A1 -> A1V; A2 -> A2V) 
B -> (B1 -> B1V; B2 -> B2V)

考虑到它只有一个地图,值A1V有一个复合键(A,A1),而B2V有一个复合键(B,B2),依此类推。

考虑到Redis也是一个大地图(键值存储)并且地图M需要存储在密钥K(K - > M)下,值A1V具有Redis复合密钥(K,A,A1)和B2V有一个Redis复合键(K,B,B2)等。

因此,您可以将简单值存储在Redis中,只需设计密钥命名空间,如:

Keys:     Values:
K:A:A1 -> A1V
K:A:A2 -> A2V
K:B:B1 -> B1V
K:B:B2 -> B2V

其中键是带分隔符的串联字符串。

如果您的简单值(如A1V)不是字符串而是一类对象(如类User的实例),则可以使用Redis类型Hash:http://redis.io/topics/data-types

  

Redis Hashes是字符串字段和字符串值之间的映射,因此它们是   是表示对象的完美数据类型

答案 1 :(得分:0)

尝试使用enableComplexMapKeySerialization,它在我的情况下效果很好。

GsonBuilder gsonbuilder = new GsonBuilder();
gsonbuilder.enableComplexMapKeySerialization();
gson = gsonbuilder.setPrettyPrinting().create();

答案 2 :(得分:-2)

我们可以使用序列化将Map转换为byte [],然后将map设置为cache。或使用gson更改映射到字符串