Memcached缓存

来源:互联网 发布:oracle导入数据 编辑:程序博客网 时间:2024/04/30 03:03

1.Memcached介绍

  •  Memcached是一个免费开源、高性能、分布式的内存对象缓存系统。
  •  Memcached是在内存中,为特定数据(字符串或对象)构建    key-value的小块数据存储。

2.Memcached优点

  •   读写性能优异,特别是高并发时和文件缓存比有明显优势。
  •   Memcache组建支持集群,并且是自动管理负载均。

3.Memcached缺点

  • 缓存空间有限:据说一台电脑的mem缓存开到2g以上会出现不稳定,数据无故丢失的现象。  
  • 掉电丢失数据:由于是把数据放在内存里的,所有一旦机器掉电,数据也就全部丢失了

微笑  一般建议:如果是做内容缓存的话,比如把一些不经常更改的文章放在文件缓存里比较合适,

       而mem则适合放一些频繁更改的数据,比如可以把session数据放进mem

4.Memcached下载安装

  • 下载memcached_en32or64.zip
  • 进行解压到:(举例:E:\memcached)
  • 在控制台输入命令安装E:\memcached\memcached.exe -d install
  • 启动:E:\memcached\memcached.exe -d start或者net startmemcached Server”

5.Memcached实践

(1)创建Java项目整个项目如图(第一种方法)

(2)创建包和类,在Demo1写入代码编写Memcached的客户端

public class Demo1 {

   public static void main(String[]args) {

 //获取socke连接池的实列对象

       SockIOPool pool=SockIOPool.getInstance();

       //服务器列表和其权重

       String[] servers={"127.0.0.1:11211"};

       Integer[] weights={3};

       //设置服务器信息

   pool.setServers(servers);

   pool.setWeights(weights);

   //初始化连接池

   pool.initialize();

   /*client.setCompressEnable(true);

   client.setCompressThreshold(64 * 1024);*/

   MemCachedClient client =new MemCachedClient();

   //添加

   client.add("school","八维");

   }

}

(3)测试类Test1

public class Test1{

  public static void main(String[]args) {

  //获取socke连接池的实列对象

       SockIOPool pool=SockIOPool.getInstance();

       //服务器列表和其权重11211为默认端口号

       String[] servers={"127.0.0.1:11211"};

       Integer[] weights={3};

       //设置服务器信息

   pool.setServers(servers);

   pool.setWeights(weights);

   //初始化连接池

   pool.initialize();

  MemCachedClient client =new    MemCachedClient();

//取值

  Object object =client.get("school");

  System.out.println(object);

}

}

(4)效果展示

(1)创建Java项目整个项目图如下(第二种方法)

(2)创建包和类,在Demo1种写入代码编写Memcached的客户端

public class Demo1 {

  public static void main(String[]args) {

  //实现 IP 套接字地址(IP 地址 + 端口号)

InetSocketAddress ins =new InetSocketAddress("127.0.0.1",11211);

    try {

MemcachedClient client =new MemcachedClient(ins);

     //第一个参数:键(key)

     //第二个参数:过期时间(单位是秒)

     //第三个参数:要设置缓存中的对象(value)如果没   有插入,有则修改

//client.add("name", 3600, "李倩倩");

//client.add("name1", 60, "周杰伦");

client.add("dog", 3600,"笨笨");

     //当时间过期后再次取值时为null

} catch (IOExceptione) {

e.printStackTrace();

}

  }

}

(3)测试类Test1

public class Demo2 {

  public static void main(String[]args) {

//实现 IP 套接字地址(IP 地址 + 端口号)

InetSocketAddress ins =new InetSocketAddress("127.0.0.1",11211);

    try {

MemcachedClient client =new MemcachedClient(ins);

//获取

Object object =client.get("dog");

System.out.println(object);

} catch (Exceptione) {

e.printStackTrace();

}

  }

}

(4)效果展示

(5)Demo2类测试

public class Demo2 {

  public static void main(String[]args) {

try {

      //实现 IP 套接字地址(IP 地址 + 端口号)

    InetSocketAddressins = new InetSocketAddress("127.0.0.1",11211);

MemcachedClient client =new MemcachedClient(ins);

CASValue<Object> gets =client.gets("dog");

CASValue<Object> gets1 =client.gets("dog");

System.out.println(gets.getValue()+""+gets.getCas());

System.out.println(gets1.getValue()+""+gets.getCas());

} catch (Exceptione) {

e.printStackTrace();

}

  }

}

(5)效果展示

 

 

 

 

 

 

 

 

 

 

 

 

 

搜索5.
1 0
原创粉丝点击