1. 在安装memcache之前,起首要安装libevent,它是 memcached 所依附的异步事务通知库。
下载地址:https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz
将下载下来的文件放入到/usr/local目录下
tar zxvf libevent-2.0.20-stable.tar.gz cd libevent-2.0.20-stable ./configure -prefix=/usr/local/libevent make make install
2.安装memcached
下载地址:http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
将下载下来的文件放入/usr/local目录下
tar zxvf memcached-1.4.15.tar.gz cd memcached-1.4.15 ./configure -prefix=/usr/local/memcached --with-libevent=/usr/local/libevent 重视:安装memcached时须要指定libevent的安装地位 make make install export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/libevent/lib 将libevent的lib目次参加LD_LIBRARY_PATH里
运行 ldd /usr/local/memcached/bin/memcached,查看可履行模块的dependency
onlyone@ubuntu:~/software/memcached-1.4.15¥ ldd /usr/local/bin/memcached linux-gate.so.1 => (0 x00892000) libevent-2.0.so.5 => /usr/local/libevent/lib/libevent-2.0.so.5 (0 x0092f000) librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0 x00728000) libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0 x001f2000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0 x0020b000) /lib/ld-linux.so.2 (0 x00768000) onlyone@ubuntu:~/software/memcached-1.4.15¥
若是呈现上方的显示,则申明安装成功了。
3.运行memcached
/usr/local/bin/memcached -d -m 2048-u root -l 192.168.0.203 -p 12001 -c 1024 -P /tmp/chenxinhan/memcached.pid
参数说明:
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是1GB,
-u 是运行Memcache的用户,这里是root,
-l 是监听的服务器IP地址,如果有多个地址的话,以逗号隔开。这里指定了服务器的IP地址192.168.13.236,
-p 是设置Memcache监听的端口,我这里设置了12001,最好是1024以上的端口,
-c 选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P 是设置保存Memcache的pid文件,我这里是保存在 /tmp/chenxinhan/memcached.pid,
4.关闭memcached
kill `cat /tmp/chenxinhan/memcached.pid`
或者:
ps -aux | grep memcache
然后直接kill掉memcache进程。
可以启动多个守护进程,但是端口不能一样。这样就可以在一台机器上拥有多个Memcached
5.测试代码:
package awo.common.util;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import awo.common.util.base.StringUtil;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemcachedHelper {
private MemcachedHelper() {
}
public static MemCachedClient mem = new MemCachedClient();
static {
//指定memcached服务地址
String[] servers = { "192.168.0.203:12001" };
// 指定memcached服务器负载量
Integer[] weights = { 3 };
// 从连接池获取一个连接实例
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.setWeights(weights);
//初始连接数5
pool.setInitConn(5);
//最小连接数 5
pool.setMinConn(5);
//最大连接数 250
pool.setMaxConn(250);
//设置一个连接最大空闲时间6小时
pool.setMaxIdle(1000 * 60 * 60 * 6);
// 设置主线程睡眠时间,每隔30秒醒来 然后开始维护 连接数大小
pool.setMaintSleep(30);
// 关闭nagle算法
pool.setNagle(false);
//设置心跳
// pool.setAliveCheck(false);
// 设置 读取 超时3秒钟
pool.setSocketTO(3000);
// 不设置连接超时
pool.setSocketConnectTO(0);
pool.initialize();
// // 设置压缩模式//如果超过64k压缩数据
// mem.setCompressEnable( true );
// mem.setCompressThreshold( 64 * 1024 );
}
/**
* 是否在缓存里
* @param pKey
* @return
*/
public static boolean IsCache(String pKey) {
try {
if(StringUtil.isEmpty(pKey)){
return false;
}
return mem.keyExists(pKey);
} catch (Exception e) {
return false;
}
}
/**
* 获取缓存数据
* @param pKey
* @return
*/
public static Object GetCache(String pKey) {
try {
if (IsCache(pKey)) {
return mem.get(pKey);
} else {
return null;
}
} catch (Exception e) {
return null;
}
}
public static void main(String[] args) {
StoreCache("test","testtest",new Date());
System.out.println(GetCache("test"));
}
/**
* 存储缓存数据
* @param pKey
* @param pObject
* @param overTime
* @return
*/
public static boolean StoreCache(String pKey, Object pObject, Date overTime) {
try {
return mem.set(pKey, pObject, overTime);
} catch (Exception e) {
return false;
}
}
/**
* 删除缓存数据
* @param pKey
* @return
*/
public static boolean RemoveCache(String pKey) {
try {
return mem.delete(pKey);
} catch (Exception e) {
return false;
}
}
/**
* 得到多个缓存数据
* @param <T>
* @param pKeys
* @return
*/
@SuppressWarnings("unchecked")
public static <T> List<T> GetCacheByKeys(String[] pKeys) {
try {
Object[] objs = mem.getMultiArray(pKeys);
List<T> list = new ArrayList<T>();
for (int i = 0; i < objs.length; i++) {
list.add((T) objs[i]);
}
return list;
} catch (Exception e) {
return null;
}
}
}
微信搜索OnlyServer或长摁下方二维码关注技术公众号
关注后我能得到什么?
1.架构师成神之路-最新60套视频资源-【免费下载】
2.400多人的微信技术群,干净,没广告,气氛活跃
3.各类技术,项目,实战视频教程丰富,想学的都有
=长摁关注=
=回复加群进微信技术群=
=回复1024下载视频资源=
————————————————
版权声明:本文为CSDN博主「mp_ok」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mp_ok/article/details/104464127