从Membase服务器到Couchbase服务器的迁移:Java客户端 [英] membase server to couchbase server migration : Java client
问题描述
我正在使用aspymemcached客户端连接到我的membase服务器. 代码如下:
public static MemcachedClient MemcachedClient(String bucketName){
URI server1 = new URI("http://192.168.100.111:8091/pools");
URI server2 = new URI("http://127.0.0.1:8091/pools");
ArrayList<URI> serverList = new ArrayList<URI>();
serverList.add(server1);
serverList.add(server2);
return new MemcachedClient(serverList, bucketName, "");
}
用于将对象放入缓存:
public static void makeMembaseCacheEntry(final String key, final int expiryTime, final Object value, final String bucketName) {
MemcachedClient client = getMembaseClient(bucketName);
if (client != null) {
client.set(key, expiryTime, value);
}
用于从缓存中获取对象:
public static Object getMembaseCacheEntry(String key) {
Object value = null;
try {
MemcachedClient client = getMembaseClient(bucketName);
if (client != null) {
value = client.get(key);
}
} catch (Exception e) {
}
return value;
}
现在,我打算将Membase服务器升级到Couchbase服务器,因此我必须使用Couchbase客户端Java API(参考: http://docs.couchbase.com/developer/java -2.0/documents-basics.html
那么我该如何将上述两种方法迁移到沙发床客户端
如果您存储的是序列化的 请注意 为了制作,您需要包装 (如果要创建或替换,请使用 要获取,您需要告诉存储桶它反序列化了一个对象: I was using aspymemcached client to connect to my membase server.
code look like : For putting object in cache : For getting object from cache : Now I planning to upgrade membase server to couchbase server, hence I have to use couchbase client java API (Ref : http://docs.couchbase.com/developer/java-2.1/java-intro.html).
In cousebase client all operation performed on JsonObject ref : http://docs.couchbase.com/developer/java-2.0/documents-basics.html So how can I migrate above two methods to couchbase client if what you are storing is a serialized It is compatible with Object stored by the 1.x client built on top of spymemcached, but it uses flags metadata and I'm not sure how migrating from Memcached to Couchbase would influence these (so you might have to write some migrating code at some point). Compared to Spymemcached, the Couchbase SDK 2.x has an API that is closer to the Couchbase Cluster organization: you start connecting to a In your first snippet, you'll only need the IPs of at least one couchbase node. Out of that you'll get a Note For make you'll need to wrap your (use For get, you'll need to tell the bucket it deserializes an Object:
这篇关于从Membase服务器到Couchbase服务器的迁移:Java客户端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!Object
,则Java SDK提供了SerializableDocument
类型(请参见Cluster
和Bucket
是线程安全的,并且应该用作单例,而不是像在makeMembaseCacheEntry
和getMembaseCacheEntry
中所做的那样在每次调用时重新打开.>
value
:Document doc = SerializableDocument.create(key, expiry, value);
bucket.upsert(doc);
upsert
,有关其他类型的kv操作请参见文档)SerializableDocument doc = bucket.get(key, SerializableDocument.class);
Object value = doc.content();
public static MemcachedClient MemcachedClient(String bucketName){
URI server1 = new URI("http://192.168.100.111:8091/pools");
URI server2 = new URI("http://127.0.0.1:8091/pools");
ArrayList<URI> serverList = new ArrayList<URI>();
serverList.add(server1);
serverList.add(server2);
return new MemcachedClient(serverList, bucketName, "");
}
public static void makeMembaseCacheEntry(final String key, final int expiryTime, final Object value, final String bucketName) {
MemcachedClient client = getMembaseClient(bucketName);
if (client != null) {
client.set(key, expiryTime, value);
}
public static Object getMembaseCacheEntry(String key) {
Object value = null;
try {
MemcachedClient client = getMembaseClient(bucketName);
if (client != null) {
value = client.get(key);
}
} catch (Exception e) {
}
return value;
}
Object
, the Java SDK offers a SerializableDocument
type (see https://developer.couchbase.com/documentation/server/4.6/sdk/java/document-operations.html#story-h2-10).Cluster
, on which you open a Bucket
, on which you can perform key/value operations like get
, update
, insert
, upsert
.Cluster
(using CouchbaseCluster.create(...)
).
Then open the Bucket
using cluster.openBucket(bucketName)
. That should be pretty much like://TODO make both of these singletons
Cluster cluster = CouchbaseCluster.create("192.168.100.111", "127.0.0.1:8091");
Bucket bucket = cluster.openBucket(bucketName, bucketPassword);
Cluster
and Bucket
are thread-safe and should be used as singletons rather than reopened on each call like you do in makeMembaseCacheEntry
and getMembaseCacheEntry
...value
:Document doc = SerializableDocument.create(key, expiry, value);
bucket.upsert(doc);
upsert
if you want to create-or-replace, see the docs for other types of kv operations)SerializableDocument doc = bucket.get(key, SerializableDocument.class);
Object value = doc.content();