在Redis中插入更多具有相同ID的项目到哈希中
问题描述:
我正在使用redis,并且希望将更多具有相同ID的项目插入到我的表格中。 这是我在Java代码中插入项排序set和哈希在Redis的:在Redis中插入更多具有相同ID的项目到哈希中
Jedis jedis = new Jedis("localhost");
jedis.sadd("list"+customer,fur.getId());
jedis.hset("list"+customer+fur.getId(),"name", fur.getName());
jedis.hset("list"+customer+fur.getId(), "wood", fur.getWood());
jedis.hset("list"+customer+fur.getId(), "prize", fur.getPric());
然后我让他们从Redis的到我的JTable:
p = jedis.smembers("tutorials"+customer);
for (String v : p) {
String pom;
pom = v;
model.addRow(new Object[]{jedis.hget("list"+customer+pom, "name"),
jedis.hget("list"+customer+pom, "wood"),
jedis.hget("list"+customer+pom, "prize")});
}
它的工作,但是当我想要多次添加相同的项目,它没有做任何事情。
答
您可以使用Redisson框架提供的Multimap对象轻松完成。 RListMultimap
对象允许每个键值重复。以下是您的示例:
Item item1 = new Item();
item1.id = 1;
item1.name = "somename1"
item1.wood = "somewood1"
item1.prize = 12;
Item item2 = new Item();
item2.id = 1;
item2.name = "somename2"
item2.wood = "somewood2"
item2.prize = 23;
RListMultimap<Long, Item> multimap = redisson.getListMultimap("list"+customer);
// both items uses same id = 1
multimap.add(item1.id, item1);
multimap.add(item2.id, item2);
// returns two items by id = 1
RList<Item> items = multimap.get(1);
答
这违背了任何关键Value商店的基本功能。如果你输入一个新的值到一个已经存在的键,它将被替换。假设采取这种情况下
你做HSET( “listkey + customer1表”, “姓名”, “姓名1”) 然后, HSET( “listkey + customer1表”, “姓名”, “NAME2”)
现在,listkey + customer1的名称将替换为name2。一个键不能包含2个不同的值。