【问题标题】:How to set map to cache with jedis [closed]如何使用 jedis 将地图设置为缓存 [关闭]
【发布时间】:2015-12-28 03:23:20
【问题描述】:

我较新使用 jedis 而不是 spring-data-redis。 现在我想将 Map 设置为使用 jedis 进行缓存。 我应该怎么办?谁能帮我?谢谢!

【问题讨论】:

  • 喜欢地图>
  • “谁能帮帮我?” -- 我可以,但我不会

标签: java dictionary jedis


【解决方案1】:

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

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

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

考虑到Redis也是一个大map(key-value store),map M需要存放在key K(K->M)下,value A1V有一个Redis复合key(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 哈希是字符串字段和字符串值之间的映射,因此它们 是表示对象的完美数据类型

【讨论】:

  • 提前谢谢您。你的想法不错,但不合适
【解决方案2】:

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

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

【讨论】:

  • 这段代码是关于什么的?
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多