日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

riak教程 java_Riak学习(2):java连接Riak服务,使用Protocol Buffers连接

發(fā)布時(shí)間:2023/12/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 riak教程 java_Riak学习(2):java连接Riak服务,使用Protocol Buffers连接 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1,介紹 Riak服務(wù)搭建,可以參考:

http://blog.csdn.net/freewebsys/article/details/12609995

Riak的接口訪問有兩種方式:

HTTP

Protocol Buffers

基于http的和pb的類似。

2,基于PB方式的調(diào)用

工程采用 maven,引入依賴:

代碼放在github上面了:

com.basho.riak

riak-client

1.4.0

com.basho.riak.protobuf

riak-pb

1.4.0

3,簡單的做一個(gè)表的CRUD

創(chuàng)建一個(gè)UserInfo類:

/**

* 用戶信息.

*/

public class UserInfo {

private String uid;

private String name;

private String city;

private String nickName;

...get set 方法忽略

使用Riak進(jìn)行CRUD:只是簡單的將uid作為key存儲(chǔ),沒有創(chuàng)建索引。

package com.demo;

import java.io.IOException;

import com.basho.riak.client.IRiakClient;

import com.basho.riak.client.RiakException;

import com.basho.riak.client.RiakFactory;

import com.basho.riak.client.RiakRetryFailedException;

import com.basho.riak.client.bucket.Bucket;

public class ClientTest {

public static void main(String[] args) throws IOException {

IRiakClient client = null;

try {// 使用pbc方式連接,而不是http,在/etc/riak/app.config

client = RiakFactory.pbcClient("127.0.0.1", 8087);

} catch (RiakException e) {

e.printStackTrace();

}

// 顯示.

System.out.println(client);

Bucket myBucket = null;

String bucketName = "userInfo";

try {

myBucket = client.fetchBucket(bucketName).execute();

if (myBucket == null) {

myBucket = client.createBucket(bucketName).execute();

}

} catch (RiakRetryFailedException e) {

e.printStackTrace();

}

// ################保存數(shù)據(jù) .

UserInfo info = new UserInfo();

info.setUid("001");

info.setName("張三");

info.setCity("北京");

try {

myBucket.store(info.getUid(), info).execute();

} catch (Exception e) {

e.printStackTrace();

}

// ################查詢數(shù)據(jù).

UserInfo fetchedUserInfo = null;

try {

fetchedUserInfo = myBucket.fetch("001", UserInfo.class).execute();

System.out.println(fetchedUserInfo);

} catch (Exception e) {

e.printStackTrace();

}

// ################修改數(shù)據(jù).

try {

fetchedUserInfo = myBucket.fetch("001", UserInfo.class).execute();

fetchedUserInfo.setName("李四");

fetchedUserInfo.setNickName("老李");

myBucket.store(info.getUid(), info).execute();

// 保存 新數(shù)據(jù)

fetchedUserInfo = myBucket.fetch("001", UserInfo.class).execute();

System.out.println("新數(shù)據(jù):" + fetchedUserInfo);

} catch (Exception e) {

e.printStackTrace();

}

// ################刪除數(shù)據(jù).

try {

myBucket.delete("001").execute();

fetchedUserInfo = myBucket.fetch("001", UserInfo.class).execute();

System.out.println("刪除收數(shù)據(jù)." + fetchedUserInfo);

} catch (Exception e) {

e.printStackTrace();

}

// 關(guān)閉。

client.shutdown();

}

}

運(yùn)行結(jié)果:

com.basho.riak.client.DefaultRiakClient@145edcf5

UserInfo [uid=001, name=張三, city=北京, nickName=null]

新數(shù)據(jù):UserInfo [uid=001, name=張三, city=北京, nickName=null]

刪除收數(shù)據(jù).null

4,代碼分析

在Riak當(dāng)中,可以簡單的把Bucket理解成一個(gè)表。

首先要?jiǎng)?chuàng)建一個(gè)這樣的Bucket,然后把數(shù)據(jù)按照key放進(jìn)去。

數(shù)據(jù)類型可以是字符串,基本類型,或是對象(如UserInfo)。

每次操作的時(shí)候都是通過執(zhí)行Bucket的方法執(zhí)行達(dá)到CRUD的操作。

StoreObject store(String key, byte[] value);

StoreObject store(String key, String value);

StoreObject store(T o);

StoreObject store(String key, T o);

FetchObject fetch(String key);

FetchObject fetch(String key, Class type);

FetchObject fetch(T o);

MultiFetchObject multiFetch(String[] keys);

MultiFetchObject multiFetch(List keys, Class type);

MultiFetchObject multiFetch(List o);

CounterObject counter(String counter);

DeleteObject delete(T o);

DeleteObject delete(String key);

StreamingOperation keys() throws RiakException;

FetchIndex fetchIndex(RiakIndex index);

5,總結(jié)

java通過使用Protocol Buffers方式調(diào)用Riak服務(wù),直接操作對象進(jìn)行CRUD。

有了這些,可以做一個(gè)簡單的評論系統(tǒng)了。評論系統(tǒng)上面不需要事物,并且數(shù)量會(huì)隨著業(yè)務(wù)增長,使用Rick可以平穩(wěn)的進(jìn)行擴(kuò)展。

這個(gè)只是簡單的,對Rick服務(wù)進(jìn)行CRUD。最沒有用到其他功能,同時(shí)沒有關(guān)于key的設(shè)計(jì)。

Rick的其他功能,以后繼續(xù)研究。

文章參考:

http://docs.basho.com/riak/latest/dev/taste-of-riak/java/

總結(jié)

以上是生活随笔為你收集整理的riak教程 java_Riak学习(2):java连接Riak服务,使用Protocol Buffers连接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。