Memcache服务端已经安装好,此时我们可以在程序中进行缓存操作了,这时我们需要Memcache客户端进行操作。市场上Memcache客户端有很多种,这里我们对两种使用比较广泛的客户端进行介绍。

我们常使用客户的方法为以下几种:

public interface IMemCacheClient {public Object get(String key);//从缓存获取一个指定的值,获取的值需要进行强制转换
public boolean set(String key,Object value);//添加一个指定的值到缓存,如果key存在则替换它
public boolean set(String key,Object value,int expiry);//添加一个指定的值到缓存,并且指定value的生命周期,如果key存在则替换它
public boolean add(String key,Object value);//添加一个指定的值到缓存,如果key存在返回false
public boolean add(String key,Object value,int expiry);//添加一个指定的值到缓存,并且指定value的生命周期,如果key存在返回false
public boolean replace(String key,Object value);//替换一个值到缓存,失败false
public boolean replace(String key,Object value,int expiry);//替换一个值到缓存,失败false,并指定生命周期
public boolean del(String key);//删除指定的值
public boolean flushAll();//删除指定的值,置为失效
}

主要的区别是客户端初始化方法,这两种客户端初始化方法代码如下:
1、Memcached-Java-Client

// 创建全局的唯一实例private MemcachedClient client = new MemcachedClient();// 设置与缓存服务器的连接池static{// 服务器列表和其权重String[] servers = { "192.168.56.102:11211" };// 获取soket 连接池的实例对象SockIOPool pool = SockIOPool.getInstance();// 设置服务器信息pool.setServers(servers);pool.setFailover(true);//设置初始连接数、最小和最大连接数以及最大处理时间pool.setInitConn(10);pool.setMinConn(5);pool.setMaxConn(250);// 设置主线程的睡眠时间pool.setMaintSleep(30);// 设置TCP的参数和连接超时pool.setNagle(false);pool.setSocketTO(3000);pool.setAliveCheck(true);// 初始化连接池pool.initialize();}

2、XmemcacheClient

private static XmemcacheClient instance = new XmemcacheClient();/** XMemCache允许开发者通过设置节点权重来调节MemCache的负载,设置的权重越高,该MemCache节点存储的数据越多,负载越大 */private static MemcachedClientBuilder mcb = new XMemcachedClientBuilder(AddrUtil.getAddresses("192.168.56.102:11211"), new int[]{1});private static MemcachedClient mc = null;/** 初始化加载客户端MemCache信息 */static{mcb.setCommandFactory(new BinaryCommandFactory()); // 使用二进制文件mcb.setConnectionPoolSize(10); // 连接池个数,即客户端个数try{mc = mcb.build();}catch (IOException e){e.printStackTrace();}}

3、完整示例(Memcached-Java-Client)
MemcacheClient1.java

/*** */
package com.css.sword.cache;import java.util.Calendar;
import java.util.Date;import com.meetup.memcached.MemcachedClient;
import com.meetup.memcached.SockIOPool;/*** <p>Title:MemcacheClient1</p>* <p>Description: 使用memcache_client.jar(Memcached-Java-Client-master) com.meetup.memcached</p> * @author yuanxj* @date 2017-2-27*/
public class MemcacheClient1 implements IMemCacheClient{// 创建全局的唯一实例private MemcachedClient client = new MemcachedClient();private static MemcacheClient1 client1 = new MemcacheClient1();// 设置与缓存服务器的连接池static{// 服务器列表和其权重String[] servers = { "192.168.56.102:11211" };// 获取soket 连接池的实例对象SockIOPool pool = SockIOPool.getInstance();// 设置服务器信息pool.setServers(servers);pool.setFailover(true);//设置初始连接数、最小和最大连接数以及最大处理时间pool.setInitConn(10);pool.setMinConn(5);pool.setMaxConn(250);// 设置主线程的睡眠时间pool.setMaintSleep(30);// 设置TCP的参数和连接超时pool.setNagle(false);pool.setSocketTO(3000);pool.setAliveCheck(true);// 初始化连接池pool.initialize();}private MemcacheClient1 (){}    public static MemcacheClient1 getInstance() {  return client1;  }    @Overridepublic Object get(String key) {// TODO Auto-generated method stub      return client.get(key);}@Overridepublic boolean set(String key, Object value) {// TODO Auto-generated method stub//client.setSanitizeKeys(false);return client.set(key, value);}@Overridepublic boolean set(String key, Object value, int expiry) {// TODO Auto-generated method stubCalendar nowTime = Calendar.getInstance();nowTime.add(Calendar.SECOND, expiry);return client.set(key, value,nowTime.getTime());}@Overridepublic boolean add(String key, Object value) {// TODO Auto-generated method stubreturn client.add(key, value);}@Overridepublic boolean add(String key, Object value, int expiry) {// TODO Auto-generated method stubCalendar nowTime = Calendar.getInstance();nowTime.add(Calendar.SECOND, expiry);return client.add(key, value,expiry);}@Overridepublic boolean replace(String key, Object value) {// TODO Auto-generated method stubreturn client.replace(key, value);}@Overridepublic boolean replace(String key, Object value, int expiry) {// TODO Auto-generated method stubCalendar nowTime = Calendar.getInstance();nowTime.add(Calendar.SECOND, expiry);return client.replace(key, value,expiry);}@Overridepublic boolean del(String key) {// TODO Auto-generated method stubreturn client.delete(key);}@Overridepublic boolean flushAll() {// TODO Auto-generated method stubreturn client.flushAll();}
}

测试:

public static void main(String[] args){try {  MemcacheClient1 client1 = new MemcacheClient1();client1.set("name", "liuhuao"); String myObject = (String) client1.get("name");  System.out.println(myObject);} catch (Exception e) {  e.printStackTrace();  }  }

这只是个简单的示例,XmemcacheClient和这个类似,需要注意的有两点:
(1)Memcached-Java-Client客户端的生命周期 expiry是Date类型,而XmemcacheClient是int类型,所以需要转换下;
(2)关于key值,例如key值为+iBGV1cMhD+sQmK1rxUMtQ==
Memcached-Java-Client 会将key值设为%2BiBGV1cMhD%2BsQmK1rxUMtQ%3D%3D
而XmemcacheClient是原值,查看Memcached-Java-Client源码发现该客户端会对key进行编码URLEncoder.encode,如果不行进行编码,可用client.setSanitizeKeys(false)解决。

初识Memcache---(2)使用memcache相关推荐

  1. 用memcache.php监测memcache的状况

    最新的memcache pecl中,新增了一个memcache.php,这个php文件可以用来方便的查看memcache的状况,界面上与apc自带的apc.php风格一致. 如图: 应该算是最方便的监 ...

  2. thinkphp memcache mysql_thinkphp中memcache的用法实例

    本文实例讲述了thinkphp中memcache的用法.分享给大家供大家参考.具体分析如下: 1.下载并安装memcache ① window下安装memcache. 下载memcached.exe ...

  3. mysql memcache redis_redis,mysql,memcache的區別與比較,redis兩種數據存儲持久化方式

    redis與mysql比較 區別:mysql中一個中小型的網絡數據庫,比oracle和sqlserver小, 但是並發能力遠超過acess這樣的桌面數據庫:redis是一個內存鍵值數據庫,支持網絡.可 ...

  4. php遍历memcache,php遍历memcache所有键值

    很有用的东东,PHP遍历MEMCACHE的所有键,在做管理memcache的时候会用到. $items=$this->memcache->getExtendedStats ('items' ...

  5. php中获取memcache所有key,Memcache查看列出所有key方法及memkeys实时查看key使用情况...

    本文我们来分享关于Memcache查看列出所有key方法及利用memkeys实时查看memcached key使用情况,smemkeys是tumblr开源的类似top的工具,可用于实时查看memcac ...

  6. php memcache 数组,PHP Memcache

    Memcache: memcache是一套分布式的高速缓存系统,目前被许多网站使用提升网站的访问速度,尤其是对于一些大型的.需要频繁访问数据库的网站访问速度提升效果很明显.具体是在内存中维护一个巨大的 ...

  7. nginx+tomcat+memcache实现负载均衡、session共享

    实验架构图: Table of Contents 1.配置tomcat 2.安装memcache 3.查看tomcat和memcache是否配置好 4.nginx实现负载均衡: 5.客户端进行测试: ...

  8. ubuntu php7 memcache,linux ubuntu下安装php memcache扩展

    memcached 安装 sudo apt-get install memcached memcached 参数说明 memcached -d -m 50 -p 11211 -u root -m 指定 ...

  9. Redis、MongoDB、Memcache的比较

    Redis和Memcache都是将数据放在内存中,都是内存数据库,不过Memcache还可以缓存注入图片.视频等文件 数据类型:memcache在添加数据时需要指定数据库的字节长度,而Redis不需要 ...

最新文章

  1. 2015内蒙古计算机考试成绩,2015年新疆公务员考试笔试成绩计算机加分说明
  2. 038_JDK的Iterable接口
  3. Python数据结构与算法(第五天)
  4. java循坏_Java的坏功能是什么
  5. configparser logging
  6. python画建筑分析图_教你用GH绘制酷炫的流线分析图
  7. flex java oracle_Flex使用Blazeds与Java交互及自定义对象转换详解-DATAGRID读取ORACLE数据...
  8. OpenShift 4 - 用CA证书或Token访问Internal Registry中的容器
  9. memcached linux 配置文件,Linux下Memcached服务器部署 | 系统运维
  10. MySQL 5.7 多实例单配置 多实例多配置文件安装 | 资料
  11. 比尔·盖茨:如果你想了解硅谷,就看《硅谷》吧 1
  12. Traceview命令
  13. 再见了,收费的XShell,我改用国产良心工具!
  14. Ps学习(色彩范围工具使用和多边形抠图案例)
  15. 完全免费无限量京东联盟高级API - 高并发京东联盟转链接口 京东客转链接口 京粉转链接口 京东联盟返利接口 京东返利接口,线报无广告接口
  16. 电脑出现“由于该设备有问题,Windows 已将其停止(代码 43)”的提示,该怎么解决?
  17. [[机缘参悟-87]:每个人需要了解自己的性格特征(老虎、孔雀、考拉、猫头鹰、变色龙)
  18. Kubernetes K8S之资源控制器Job和CronJob详解
  19. python求均值 有限存储量_python计算均值
  20. 跟着老猫来搞GO-基础语法

热门文章

  1. STM32的中断优先级说明(抢占式与响应式优先级)
  2. 阿里云服务器ECS怎么重装系统?
  3. php挂载webdav,phpweb服务器开启了WebDAV的关闭方法
  4. ffmpeg视频特效
  5. 王菲语法11 动词(非谓语动词)
  6. 数字集成电路设计-1-用一个mux和一个inv实现异或
  7. Javascript - 1 引入方式,变量常量,数据类型,运算符,流程控制,数组,函数,对象,DOM
  8. win10如何更改计算机的用户名称,win10账户名修改,详细教您win10怎么更改账户名称...
  9. Lightning Network模拟器
  10. DB2如何修改某个字段由非空转变为可以为空