2016-04-30 27 views
1

私はredisで作業しています。同じIDのアイテムをテーブルに追加したいと思います。 これはRedisのでソートセットとハッシュにアイテムを挿入するためのJavaでの私のコードです:同じIDを持つアイテムをRedisのハッシュに挿入する

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()); 

その後、私は私のJTableへのRedisからそれらを取得しています:

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が提供するマルチマップオブジェクトを使用すると簡単に行うことができます。 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

これは、任意のキーバリューストアの基本機能とは異なります。既に存在するキーに新しい値を入力すると、そのキーは置き換えられます。この場合に

を取ると、あなたが HSET( "listkey + customer1"、 "名前"、 "名前2")

、その後、HSET( "listkey + customer1"、 "名前"、 "NAME1") を行うと、

これで、listkey + customer1の名前がname2に置き換えられました。単一のキーは2つの異なる値を保持することはできません。

関連する問題