Linux安装memcached

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值