上云无忧 > 文档中心 > 天翼云分布式缓存服务Memcache连接方式(JAVA Spymemcache)
分布式缓存服务Memcache
天翼云分布式缓存服务Memcache连接方式(JAVA Spymemcache)

文档简介:
JAVA代码示例 Memcache集群模式在客户端控制,一致性哈希算法可以有效防止单机或者多机掉线引发的大量数据迁移。 需要用户名密码 import lombok.extern.slf4j.Slf4j; import net.spy.memcached.ConnectionFactoryBuilder; import net.spy.memcached.DefaultHashAlgorithm;
*产品来源:中国电信天翼云。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

JAVA Spymemcache


JAVA代码示例

Memcache集群模式在客户端控制,一致性哈希算法可以有效防止单机或者多机掉线引发的大量数据迁移。
需要用户名密码
import lombok.extern.slf4j.Slf4j;
import net.spy.memcached.ConnectionFactoryBuilder;
import net.spy.memcached.DefaultHashAlgorithm;
import net.spy.memcached.MemcachedClient;
import net.spy.memcached.auth.AuthDescriptor;
import net.spy.memcached.auth.PlainCallbackHandler;
import net.spy.memcached.internal.OperationFuture;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;

@Slf4j
public class CtyunMemTest {

    public static void main(String[] args) {
        String host1 = "****";   //1号机ip
        int port1 = 11211;
        InetSocketAddress inetSocketAddress1 = new InetSocketAddress(host1, port1);          .
 String hostn = "****";   //n号机ip
        int portn = 11211;
        InetSocketAddress inetSocketAddressn = new InetSocketAddress(hostn, portn);
        ArrayList<InetSocketAddress> addressList = new ArrayList<>();
        addressList.add(inetSocketAddress1);          .
        addressList.add(inetSocketAddressn);
        ConnectionFactoryBuilder cBuilder = new ConnectionFactoryBuilder().setProtocol(ConnectionFactoryBuilder.Protocol.BINARY).setHashAlg(DefaultHashAlgorithm.KETAMA_HASH);    //这里通过设置setHashAlg(DefaultHashAlgorithm.KETAMA_HASH),将集群模式选择为一致性hash。单机情况不用设置setHashAlg

        //集群中不同主机的用户名和密码需要一致
        String username = "****";  //用户名
        String password = "****";  //密码
        AuthDescriptor ad = new AuthDescriptor(new String[]{"PLAIN"},
        new PlainCallbackHandler(username,password));
        cBuilder.setAuthDescriptor(ad);
        MemcachedClient memcachedClient = null;
        try {
            memcachedClient = new MemcachedClient(cBuilder.build(), addressList);
            OperationFuture<Boolean> operationFuture = memcachedClient.set("ctyun", 60, "from ctyun");
            Boolean result = operationFuture.get();
            if(result){
                log.info("set success");
                log.info("get value is : {}", memcachedClient.get("ctyun"));
            }else{
                log.info("set fault");
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } finally {
            if(null != memcachedClient){
                memcachedClient.shutdown();
            }
        }
    }
}
 
不需要用户名密码
import lombok.extern.slf4j.Slf4j;
import net.spy.memcached.ConnectionFactoryBuilder;
import net.spy.memcached.DefaultHashAlgorithm;
import net.spy.memcached.MemcachedClient;
import net.spy.memcached.internal.OperationFuture;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;

@Slf4j
public class CtyunMemTest {

    public static void main(String[] args) {
        String host1 = "****";   //1号机ip
        int port1 = 11211;
        InetSocketAddress inetSocketAddress1 = new InetSocketAddress(host1, port1);          .
 String hostn = "****";   //n号机ip
        int portn = 11211;
        InetSocketAddress inetSocketAddressn = new InetSocketAddress(hostn, portn);
        ArrayList<InetSocketAddress> addressList = new ArrayList<>();
        addressList.add(inetSocketAddress1);          .
        addressList.add(inetSocketAddressn);
        ConnectionFactoryBuilder cBuilder = new ConnectionFactoryBuilder().setHashAlg(DefaultHashAlgorithm.KETAMA_HASH);   
  //这里通过设置setHashAlg(DefaultHashAlgorithm.KETAMA_HASH),将集群模式选择为一致性hash模式。单机情况不用设置setHashAlg

 
        MemcachedClient memcachedClient = null;
        try {
            memcachedClient = new MemcachedClient(cBuilder.build(), addressList);
            OperationFuture<Boolean> operationFuture = memcachedClient.set("ctyun", 60, "from ctyun");
            Boolean result = operationFuture.get();
            if(result){
                log.info("set success");
                log.info("get value is : {}", memcachedClient.get("ctyun"));
            }else{
                log.info("set fault");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } finally {
            if(null != memcachedClient){
                memcachedClient.shutdown();
            }
        }
    }
}
输出结果
set success
get value is : from ctyun

相似文档
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部