在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个不同的值。