2016-04-30 145 views
1

我正在使用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")}); 
} 

它的工作,但是當我想要多次添加相同的項目,它沒有做任何事情。

回答

1

您可以使用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); 
1

這違背了任何關鍵Value商店的基本功能。如果你輸入一個新的值到一個已經存在的鍵,它將被替換。假設採取這種情況下

你做HSET( 「listkey + customer1表」, 「姓名」, 「姓名1」) 然後, HSET( 「listkey + customer1表」, 「姓名」, 「NAME2」)

現在,listkey + customer1的名稱將替換爲name2。一個鍵不能包含2個不同的值。