memcache学习
1、安装
Linux环境下安装
1--安装libevent
#tar zvxf libevent-2.0.13-stable.tar.gz
#cd libevent-2.0.13-stable
#./configure --prefix=/usr
#make
#make install
--检查是否成功
# ls -al /usr/lib | grep libevent
2--安装memcached
#tar zxvf memcached-1.4.0.tar.gz
#cd memcached-1.4.0
# ./configure --with-libevent=/usr
# make
# make install
--检查是否成功
root@yang-desktop:~$ ls -la /usr/local/bin/*mem*
-rwxr-xr-x 1 root root 257899 2011-09-18 18:10/usr/local/bin/memcached
3--启动memcached
/usr/local/bin/memcached -d -m 100 -u root -l 127.0.0.1-p 11211 -c 256
【说明】
-d:启动一个守护进程,
-m:分配给Memcache使用的内存数量,单位是MB,默认是64MB,
-u:运行Memcache的用户
-l:监听的服务器IP地址,127.0.0.1 为ip地址,多个间隔用逗号
-p:设置Memcache监听的端口,默认是11211注:-p(p为小写)
-c:设置最大并发连接数,默认是1024
-h 显示帮助
4--关闭memcached
killall memcached
windows环境下安装
1 下载memcached-1.2.6-win32-bin.zip,地址为:
http://code.jellycan.com/memcached/
2 cmd命令运行memcached.exe -d install
3 cmd命令net start "memcached Server",打开任务管理器,可以看见memcached.exe的进程.
4 F:/php/mem/memcached.exe -d start
指定内存划分-m 200 ,IP监听 -l 192.168.1.*,端口号-p 11211等
5 验证安装成功:进入telnet localhost 11211
6 进入. 输入version查看版本,输入stats查看状态
2、示例代码
使用Memcache客户端需要依赖的第三方类库:
commons-logging-1.0.4.jar or highversion
log4j-1.2.12.jar or high version
codehaus/woodstox/wstx-asl-3.2.1.jaror high version
codehaus/staxapi/stax-api-1.0.1.jaror high version
基础配置文件:
<?xml version="1.0"encoding="UTF-8"?>
<memcached>
<client name="mclient1"compressEnable="true" defaultEncoding="UTF-8"socketpool="pool0"> <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler>
</client>
<socketpool name="pool0"failover="true" initConn="5" minConn="5"maxConn="250" maintSleep="0"
nagle="false"socketTO="3000" aliveCheck="true">
<servers>127.0.0.1:11211</servers>
</socketpool>
<cluster name="cluster1">
<memCachedClients>mclient1</memCachedClients>
</cluster>
</memcached>
1. 创建memcached的标签。
2. 创建 client的标签。
注意:
name 属性是程序中使用Cache的唯一标识。
socketpool 属性将会关联到后面的socketpool配置。
errorHandler 可选,用来处理出错情况。注意在Tag中不要使用空格或者Tab键。
3. 创建socketpool的标签。
注意:
name 属性和client 配置中的socketpool 属性相关联。
maintSleep属性是后台线程管理SocketIO池的检查间隔时间,如果设置为0,则表明不需要后台线程维护SocketIO线程池,默认需要管理。
socketTO 属性是Socket操作超时配置,单位ms。
aliveCheck 属性表示在使用Socket以前是否先检查Socket状态。
4. 创建 servers 标签作为socketPool的子标签.设置memcache服务端实例地址,支持多个地址设置,例如“127.0.0.1” 或 “127.0.0.1:11211, 127.0.0.1:11212”.
5. 创建 weights 标签作为socketPool的子标签(可选),它表明了上面设置的服务器实例的Load权重. 例如<weights>3,7</weights> 表示30% load 在127.0.0.1:11211, 70% load 在127.0.0.1:11212
客户端
简单使用:
public void test()
{
ICacheManager<IMemcachedCache>manager;
manager =CacheUtil.getCacheManager(IMemcachedCache.class,
MemcachedCacheManager.class.getName());
manager.setConfigFile("memcached1.xml");//可以指定配置文件名
manager.start();
try
{
IMemcachedCache cache = manager.getCache("mclient");
cache.put("key","value");
org.junit.Assert.assertEquals(cache.get("key"),"value");
}
Finally{ manager.stop();}
}
注意:
Cache Manger 不要创建多个,一个实例就可以满足应用的需求,它会负责创建和初始化所有配置在Classpath下配置文件中的客户端, Cache Manager 也可以由开发者自己实现,只需要在你的jar中META-INF/services 目录里建立文件名为“com.alisoft.xplatform.asf.cache.ICacheManager”的文件,然后将将实现类全路径写在这个文件中即可,框架将会自动载入。
Cache Manger start 表示初始化所有的配置过的客户端,stop 表示释放Cache Pool中客户端的资源。
结合本地Cache使用 Memcache:
publicvoid test()
{
ICacheManager<IMemcachedCache> manager;
manager =CacheUtil.getCacheManager(IMemcachedCache.class,
MemcachedCacheManager.class.getName());
manager.start();
try
{
IMemcachedCache cache =manager.getCache("mclient");
cache.put("key", "value");
org.junit.Assert.assertEquals(cache.get("key",5),"value");
}
Finally{ manager.stop();}
}
使用本地Cache结合Memcache,可以极大提高程序的执行效率,因为Memcache还是会在网络交互中损耗,因此将数据根据敏感程度在本地也作有效时间缓存可以提高效率。 Cache.get(“key”,5)表示首先从本地缓存获取”key”的值,如果存在立即返回,如果不存在,则查询Memcache,当Memcache获取到此数据,则将该数据缓存在本地缓存,并且设置有效期为5秒钟后失效。
memcache学习相关推荐
- memcache学习之c客户端
2019独角兽企业重金招聘Python工程师标准>>> http://www.beckbi.cn/?p=210 memcache学习之简单使用,介绍mc的协议.使用mc的协议实现了一 ...
- Memcache学习笔记
基本的memecached客户端命令 5个常用的命令: 1.-stats:当前所有memcached服务器运行的状态信息 2.-add: 添加一个数据到服务器. 3.-set:替换一个已经存在的数据, ...
- memcache 学习
memcache的最佳实践方案 http://www.blogjava.net/chhbjh/archive/2012/02/21/370472.html api频次限制设计与实现 http://if ...
- memcache的学习路线图
memcache学习材料 //memcache自带的github 上的 wiki //席剑飞 Memcache(MC)系列 1~8系列 评注: memcache系统写的最深的一博客,建议一读. htt ...
- memcache 源码分析之开场白
装逼之前的一段独白: 现在2018年5月5号.距离上次写技术博客还是2016好像是12月份的事情,当时离职在陪老婆考试,我算是半给陪考和半个鼓励师.呵呵..不知不觉时间到了2018年,我也来到了深圳, ...
- python实现监控数据界面_python 监控界面
MySQL MTOP - 开源 MySQL 企业监控系统 MySQLMTOP是一个由Python+PHP开发的MySQL企业级监控系统.系统由Python实现多进程数据采集和告警,PHP实现WEB展示 ...
- python的锁机制_python锁机制
python 多线程 真正的多线程吗? 对于多核处理器,在同一时间确实可以多个线程独立运行,但在Python中确不是这样的了.原因在于,python虚拟机中引入了GIL这一概念.GIL(Global ...
- 分布式核心技术-Redis详解
前面有写过一篇Redis集群实战详解,主要是针对部署redis集群实战操作.可参考:https://blog.csdn.net/qq_45441466/article/details/11642431 ...
- memcache、Redis与MongoDB的学习-1
除此接触这三个词的概念,对今天看的资料最了一些整理. 之前经常有看到memcache.Redis与MongoDB相关的数据库,最开始意味这些都只是用来做数据库优化的缓存工具,后来具体看了一些资料之后才 ...
最新文章
- Gonet2 游戏server框架解析之gRPC提高(5)
- Linux 防火墙开放特定端口 (iptables)
- 打开高效文本编辑之门_Linux Sed插入追加转换退出等命令应用
- Problem C: 类的初体验(III)
- Service Worker的应用
- shouldComponentUpdate 的作用
- MySQL启动过程详解
- 如何编写优雅的代码:05. 设计模式(下)
- 第一节:分布式文件系统(DFS,Distributed File System)
- Spring的单例模式底层实现
- 不出门也能拍好证件照
- matlab实现带通滤波器的方法,数字信号处理课程设计---带通滤波器的设计及其MATLAB实现.doc...
- tinymce 实现 粘贴图片自动上传
- VB中数组的嵌套循环
- 关于nginx指向nacos遇到的坑
- CSDN--在有序和无序段落中如何换行
- wordExport导出word时关于echarts图表生成图片的解决方案
- 【笔试——腾讯2021实习笔试题第二次2021.4.4】第3题 n人高空过钢索
- CCF人工智能的A类期刊会议列表
- 北航计算机科学与技术专业考研方向,北京航空航天大学2017年计算机科学与技术专业介绍_北航考研网...