memcached简介、安装、在java总使用方法

最近项目开发需要用到memcached分布式缓存这个东西,把自己学到的一些东西分享给大家。文章分为三部分,第一部分简单介绍一下什么是memcached,第二部分介绍memcached的安装和简单的使用命令,第三部分介绍在java中如何使用memcached

什么是memcached

1.基本概念:

Memcached是一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

2.适用场合

(1) 分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。

(2) 数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然我们也可以使用Hibernate的缓存机制。但memcached是基于分布式的,并可独立于网站应用本身,所以更适合大型网站进行应用的拆分。

(3) 服务器间数据共享。举例来讲,我们将网站的登录系统、查询系统拆分为两个应用,放在不同的服务器上,并进行集群,那这个时候用户登录后,登录信息如何从登录系统服务器同步到查询系统服务器呢?这时候,我们便可以使用memcached,登录系统将登录信息缓存起来,查询系统便可以获得登录信息,就像获取本地信息一样。

3. 不适用场合

那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源

 

安装

1.这里介绍windows环境的安装步骤

1 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached

2cmd下输入 'c:\memcached\memcached.exe -d install' 安装

3再输入: 'c:\memcached\memcached.exe -d start' 启动。

以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

memcached下载地址如下:

http://download.csdn.net/download/qq_25611965/10149599

2. Memcached常用命令

1连接服务器telnet ip 端口

 


(2)添加数据:addtest(键名) 0  30(过期时间单位为秒)3 (要添加value的长度)123(value);


(3)get 命令用于检索与之前添加的键相对的值。上图是使用 get 命令获得test的值:

(4)replace 命令会替换存储中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应


(5)delete 命令用于删除 memcached 中的任何现有值.如果该键存在,则删除该值。如果不存在,则返回一条NOT_FOUND 消息。

清除所有缓存:flush_all


 

3. java中使用Memcached

(1)需要导入的jar

A. commons-pool.jar

B. java_memcached-release_2.6.3.jar

C. slf4j-api-1.6.1.jar

D. slf4j-simple-1.6.1.jar

(2)实例代码

Java代码   收藏代码
  1. package com.hl.memcached.cache;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import com.danga.MemCached.MemCachedClient;  
  6. import com.danga.MemCached.SockIOPool;  
  7.   
  8. public class MyCache {  
  9.     public static void main(String[] args) {  
  10.         MemCachedClient client=new MemCachedClient();  
  11.         String [] addr ={"127.0.0.1:11211"};  
  12.         Integer [] weights = {3};  
  13.         SockIOPool pool = SockIOPool.getInstance();  
  14.         pool.setServers(addr);  
  15.         pool.setWeights(weights);  
  16.         pool.setInitConn(5);  
  17.         pool.setMinConn(5);  
  18.         pool.setMaxConn(200);  
  19.         pool.setMaxIdle(1000*30*30);  
  20.         pool.setMaintSleep(30);  
  21.         pool.setNagle(false);  
  22.         pool.setSocketTO(30);  
  23.         pool.setSocketConnectTO(0);  
  24.         pool.initialize();  
  25.           
  26. //      String [] s  =pool.getServers();  
  27.         client.setCompressEnable(true);  
  28.         client.setCompressThreshold(1000*1024);  
  29.           
  30. //      将数据放入缓存  
  31.         client.set("test2","test2");  
  32.           
  33. //      将数据放入缓存,并设置失效时间  
  34.         Date date=new Date(2000000);  
  35.         client.set("test1","test1", date);  
  36.           
  37. //      删除缓存数据  
  38. //      client.delete("test1");  
  39.           
  40. //      获取缓存数据  
  41.         String str =(String)client.get("test1");  
  42.         System.out.println(str);  
  43.     }  
  44. }  

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值