riak-java-clientを使う
RiakにJavaからアクセスするためのライブラリ https://github.com/basho/riak-java-client
をちょっと触ったのでメモ。
LowレベルとHighレベルの2種類のAPIがあるけど、今回は手軽に試せるHighレベルの方で。
つっこむデータの定義
アノテーションで色々指定できる。
IDはアノテーションでなくても指定するインタフェースがあるけど、とりあえずお試しなので。
デフォだとJSON形式で保存されて、マッピングなどは勝手にやってくれる。
基本的な型だったりネストとかしても、とりあえず大丈夫。
public class User { @RiakKey // Key public String id; @RiakIndex(name = "age") // Secondary Index public long age; @RiakLinks // Link public Collection<RiakLink> links; }
処理
色々とはしょってるけど、まぁイメージってことで。
IRiakClient client = null; try { client = RiakFactory.pbcClient("host", port); Bucket bucket = client.fetchBucket("test").execute(); User user = new User(); // ・・・略 bucket.store(user).execute(); // 1件取得 User fetchUser = bucket.fetch("1000", User.class).execute(); // 複数件取得 List<MultiFetchFuture<User>> list = bucket.multiFetch(Arrays.asList(new String[]{"1000", "1001"}), User.class).execute(); // indexで取得 List<String> ids = bucket.fetchIndex(IntIndex.named("age_int")).from(30).to(50).execute(); } catch (Exception e) { e.printStackTrace(); } finally { client.shutdown(); }