memcached 是一个简单使用示例
2012-11-27 15:41
351 查看
memcached作为当前分布式缓存系统,以其的易用性和强大的可维护性,稳定性。广泛应用去现在web服务器的解决方案之中。最近大概了了解下该套系统并写了一个简单的例子。大概从部署到实现吧。
1.建立memcached服务端运行程序。memcached作为分布式的缓存服务系统,最大的特点是缓存服务器可以不在本地,所以需要在目标服务器部署memcached的服务端程序。由于是我的开发机是在window的环境下使用的,我目前使用的版本是:Memcached_1.2.5.zip 。该文件的链接地址我已经忘了,有需要的朋友可以自己去找下或者,我到时候会放到csdn的共享文件里面去。使用方法如下:
1>首先解压文件到文件目录下。我解压的环境是:C:\memcached 。
2>安装memcached服务器程序:通过cmd进入目录:C:\memcached,键入命令:memcached.exe -d install 。
3>启动memcached并注册为的window服务:c:\memcached\memcached.exe -d start
2.java调用memcached,这里我使用的是memcached client for java 的客户端jar包。软件包版本如下:java_memcached-release_2.6.6.zip。有commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar。调用代码示例如下:
附录:记录一些memcached的命令信息
输入命令stats,查看 STAT curr_items 数量,增加、修改、删除此数量随之变化
具体memcached输入stats命令解释如下:(转载:/article/5998021.html)
STAT pid 1552
STAT uptime 3792
STAT time 1262517674
STAT version 1.2.6
STAT pointer_size 32
STAT curr_items 1
STAT total_items 2
STAT bytes 593
STAT curr_connections 2
STAT total_connections 28
STAT connection_structures 9
STAT cmd_get 3
STAT cmd_set 2
STAT get_hits 2
STAT get_misses 1
STAT evictions 0
STAT bytes_read 1284
STAT bytes_written 5362
STAT limit_maxbytes 67108864
STAT threads 1
END
这里显示了很多状态信息,下边详细解释每个状态项:
1. pid: memcached服务进程的进程ID
2. uptime: memcached服务从启动到当前所经过的时间,单位是秒。
3. time: memcached服务器所在主机当前系统的时间,单位是秒。
4. version: memcached组件的版本。这里是我当前使用的1.2.6。
5. pointer_size:服务器所在主机操作系统的指针大小,一般为32或64.
6. curr_items:表示当前缓存中存放的所有缓存对象的数量。不包括目前已经从缓存中删除的对象。
7. total_items:表示从memcached服务启动到当前时间,系统存储过的所有对象的数量,包括目前已经从缓存中删除的对象。
8. bytes:表示系统存储缓存对象所使用的存储空间,单位为字节。
9. curr_connections:表示当前系统打开的连接数。
10. total_connections:表示从memcached服务启动到当前时间,系统打开过的连接的总数。
11. connection_structures:表示从memcached服务启动到当前时间,被服务器分配的连接结构的数量,这个解释是协议文档给的,具体什么意思,我目前还没搞明白。
12. cmd_get:累积获取数据的数量,这里是3,因为我测试过3次,第一次因为没有序列化对象,所以获取数据失败,是null,后边有2次是我用不同对象测试了2次。
13. cmd_set:累积保存数据的树立数量,这里是2.虽然我存储了3次,但是第一次因为没有序列化,所以没有保存到缓存,也就没有记录。
14. get_hits:表示获取数据成功的次数。
15. get_misses:表示获取数据失败的次数。
16. evictions:为了给新的数据项目释放空间,从缓存移除的缓存对象的数目。比如超过缓存大小时根据LRU算法移除的对象,以及过期的对象。
17. bytes_read:memcached服务器从网络读取的总的字节数。
18. bytes_written:memcached服务器发送到网络的总的字节数。
19. limit_maxbytes:memcached服务缓存允许使用的最大字节数。这里为67108864字节,也就是是64M.与我们启动memcached服务设置的大小一致。
20. threads:被请求的工作线程的总数量。
1.建立memcached服务端运行程序。memcached作为分布式的缓存服务系统,最大的特点是缓存服务器可以不在本地,所以需要在目标服务器部署memcached的服务端程序。由于是我的开发机是在window的环境下使用的,我目前使用的版本是:Memcached_1.2.5.zip 。该文件的链接地址我已经忘了,有需要的朋友可以自己去找下或者,我到时候会放到csdn的共享文件里面去。使用方法如下:
1>首先解压文件到文件目录下。我解压的环境是:C:\memcached 。
2>安装memcached服务器程序:通过cmd进入目录:C:\memcached,键入命令:memcached.exe -d install 。
3>启动memcached并注册为的window服务:c:\memcached\memcached.exe -d start
2.java调用memcached,这里我使用的是memcached client for java 的客户端jar包。软件包版本如下:java_memcached-release_2.6.6.zip。有commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar。调用代码示例如下:
package org.yehao.test; import java.util.Date; import com.danga.MemCached.*; public class BasicTest { //客户端ID private static final String POOL_NAME="test_pool"; //memcached连接客户端 protected static MemCachedClient mcc; static { //设置缓存服务器列表,当使用分布式缓存的时,可以指定多个缓存服务器 String[] servers = { "127.0.0.1:11211" }; //与服务器列表中对应的各服务器的权重 Integer[] weights = {3}; //创建Socked连接池 SockIOPool pool = SockIOPool.getInstance(POOL_NAME); //向连接池设定服务器和权重 pool.setServers( servers ); pool.setWeights( weights ); // 设置初始连接数、最小和最大连接数以及最大处理时间 pool.setInitConn( 5 ); pool.setMinConn( 5 ); pool.setMaxConn( 250 ); pool.setMaxIdle( 1000 * 60 * 60 * 6 ); // 设置主线程的睡眠时间 pool.setMaintSleep( 30 ); // 设置TCP的参数,连接超时等 pool.setNagle( false ); pool.setSocketTO( 3000 ); pool.setSocketConnectTO( 0 ); //初始化连接池 pool.initialize(); } public static void main(String[] args){ // 初始化memcached连接客户端 mcc=new MemCachedClient(POOL_NAME); //设置key,value,过期时间 mcc.set("msg","Hello,world!",new Date(System.currentTimeMillis()+13000)); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(mcc.get("msg")); } }
附录:记录一些memcached的命令信息
输入命令stats,查看 STAT curr_items 数量,增加、修改、删除此数量随之变化
具体memcached输入stats命令解释如下:(转载:/article/5998021.html)
STAT pid 1552
STAT uptime 3792
STAT time 1262517674
STAT version 1.2.6
STAT pointer_size 32
STAT curr_items 1
STAT total_items 2
STAT bytes 593
STAT curr_connections 2
STAT total_connections 28
STAT connection_structures 9
STAT cmd_get 3
STAT cmd_set 2
STAT get_hits 2
STAT get_misses 1
STAT evictions 0
STAT bytes_read 1284
STAT bytes_written 5362
STAT limit_maxbytes 67108864
STAT threads 1
END
这里显示了很多状态信息,下边详细解释每个状态项:
1. pid: memcached服务进程的进程ID
2. uptime: memcached服务从启动到当前所经过的时间,单位是秒。
3. time: memcached服务器所在主机当前系统的时间,单位是秒。
4. version: memcached组件的版本。这里是我当前使用的1.2.6。
5. pointer_size:服务器所在主机操作系统的指针大小,一般为32或64.
6. curr_items:表示当前缓存中存放的所有缓存对象的数量。不包括目前已经从缓存中删除的对象。
7. total_items:表示从memcached服务启动到当前时间,系统存储过的所有对象的数量,包括目前已经从缓存中删除的对象。
8. bytes:表示系统存储缓存对象所使用的存储空间,单位为字节。
9. curr_connections:表示当前系统打开的连接数。
10. total_connections:表示从memcached服务启动到当前时间,系统打开过的连接的总数。
11. connection_structures:表示从memcached服务启动到当前时间,被服务器分配的连接结构的数量,这个解释是协议文档给的,具体什么意思,我目前还没搞明白。
12. cmd_get:累积获取数据的数量,这里是3,因为我测试过3次,第一次因为没有序列化对象,所以获取数据失败,是null,后边有2次是我用不同对象测试了2次。
13. cmd_set:累积保存数据的树立数量,这里是2.虽然我存储了3次,但是第一次因为没有序列化,所以没有保存到缓存,也就没有记录。
14. get_hits:表示获取数据成功的次数。
15. get_misses:表示获取数据失败的次数。
16. evictions:为了给新的数据项目释放空间,从缓存移除的缓存对象的数目。比如超过缓存大小时根据LRU算法移除的对象,以及过期的对象。
17. bytes_read:memcached服务器从网络读取的总的字节数。
18. bytes_written:memcached服务器发送到网络的总的字节数。
19. limit_maxbytes:memcached服务缓存允许使用的最大字节数。这里为67108864字节,也就是是64M.与我们启动memcached服务设置的大小一致。
20. threads:被请求的工作线程的总数量。
相关文章推荐
- flex 与 java交互 的一个简单示例 (使用RemoteObject)
- Plone的一个简单工作流使用示例
- 一个简单的使用SDL播放YUV文件的示例
- 由一个简单示例 引出java继承中父子类成员变量共享问题 以及super的使用
- flex 整合 struts 的一个简单示例(使用Httpservice)
- 一个简单的使用SDL播放YUV文件的示例
- handlersocket使用 第一章 基本语法和一个简单示例
- 使用MyBatis搭建一个访问mysql数据库的简单示例
- Python-memcached的基本使用(python 中使用memcached简单示例)
- 用一个简单的示例说明日志记录组件log4net的使用
- 使用短信控件的一个简单示例
- C++中enum的使用的一个简单示例
- Xqk.Data数据框架使用说明之:一个简单的示例
- 使用Python的Bottle框架写一个简单的服务接口的示例
- 使用Unicode写文本文件:一个简单类的示例
- 使用 JointCode.Shuttle 进行跨 AppDomain 通信的一个简单示例
- PHP 使用memcached简单示例分享
- 一个简单的e-Chart图表使用示例之散点图
- 一个超级简单的HTML模板框架源代码以及使用示例
- urllib库的简单使用 && 一个简单的Python爬虫示例