centos安装memcached和java操作实例

准备搭建memcached缓存集群。这里简单的记录一下搭建过程

由于memcached安装时,需要使用libevent类库,所以先安装libevent 下载地址http://www.monkey.org/~provos/libevent/

(一)我下载的是libevent-1.4.14b-stable.tar.gz

1|解压 tar zxvf libevent-1.4.14b-stable.tar.gz 

2|进入文件

cd libevent-1.4.14b-stable

3.编译安装(默认安装到/usr/local/lib/目录

./configure
make
make install

(二)安装memcached

安装memcached

memcached下载网址:http://www.danga.com/memcached/download.bml

1. 解压缩
 tar xzfv memcached-1.2.6.tar.gz

2. 进入到 memcached-1.2.6目录
 cd memcached-1.2.6

3. 编译,安装
    ./configure --prefix=/local/memcached
    make
    make install

这里可能会在安装的时候提示权限问题,那么就先

chmod +x configure

安装完成后,会在 /local/memcached 出现 bin和share目录

进行 bin目录,启动 memcache

方法如下:

./memcached -d -u nobody -m 512 127.0.0.1 -p 11211

此时,会报一个异常

error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

原因是找不到libevent-1.4.so.2类库,解决办法如下:

使用LD_DEBUG=help ./memcached -v来确定 加载的类库路径,方法如下:

LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less

则系统会显示:

linux:/local/memcached/bin # LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less
     20421:     find library=libevent-1.4.so.2; searching
     20421:      search cache=/etc/ld.so.cache
     20421:      search path=/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:/lib/sse2:/lib:/usr/lib/tls/i686
/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:/usr/lib/i686:/usr/lib/sse2:/usr/lib          (system search path)
     20421:       trying file=/lib/tls/i686/sse2/libevent-1.4.so.2
     20421:       trying file=/lib/tls/i686/libevent-1.4.so.2
     20421:       trying file=/lib/tls/sse2/libevent-1.4.so.2
     20421:       trying file=/lib/tls/libevent-1.4.so.2
     20421:       trying file=/lib/i686/sse2/libevent-1.4.so.2
     20421:       trying file=/lib/i686/libevent-1.4.so.2
     20421:       trying file=/lib/sse2/libevent-1.4.so.2
     20421:       trying file=/lib/libevent-1.4.so.2
     20421:       trying file=/usr/lib/tls/i686/sse2/libevent-1.4.so.2
     20421:       trying file=/usr/lib/tls/i686/libevent-1.4.so.2
     20421:       trying file=/usr/lib/tls/sse2/libevent-1.4.so.2
     20421:       trying file=/usr/lib/tls/libevent-1.4.so.2
     20421:       trying file=/usr/lib/i686/sse2/libevent-1.4.so.2
     20421:       trying file=/usr/lib/i686/libevent-1.4.so.2
     20421:       trying file=/usr/lib/sse2/libevent-1.4.so.2
     20421:       trying file=/usr/lib/libevent-1.4.so.2
     20421:
./memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
我们看到,memcached会到很多地方去找,所以根据其它求,我们只需建一个软链接,指定到我们安装的类库上即可
方法如下:
ln -s /usr/local/lib/libevent-1.4.so.2 /lib/libevent-1.4.so.2

现在可以正常启动memcached了
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211

memcache启动参数说明:

安装好了就可以使用memcached了,下面我用一种最简单的官方提供的方法java_memcached_releas

可以到这里去下载https://github.com/gwhalin/Memcached-Java-Client/downloads

工具类

package org.memcached.xiezhaodong.test;

import java.util.Date;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

/**
 *
 * <pre><b>功能描述:</b>Memcached的 工具类
 *
 * @author xie)<br>
 *
 * <b>修改历史:</b>(修改人,修改时间,修改原因/内容)
 *
 * </pre>
 */
public final class MemcachedUtil {

    /**
     * <b>构造函数:工具类,禁止实例化</b>
     *
     */
    private MemcachedUtil() {

    }

    // 创建全局的唯一实例
    private static MemCachedClient mcc = new MemCachedClient();

    /**
     * 自身实例
     */
    private static MemcachedUtil memcachedUtil = new MemcachedUtil();

    // 设置与缓存服务器的连接池
    static {
        // 服务器列表和其权重
        String[] servers = {"192.168.80.100:11211" };// Ip地址和端口号
        // 权重
        Integer[] weights = {3 };

        // 获取socket连接池的实例对象
        SockIOPool pool = SockIOPool.getInstance();

        // 设置服务器信息
        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();

        // 压缩设置,超过指定大小(单位为K)的数据都会被压缩
        // mcc.setCompressEnable(true);
        // mcc.setCompressThreshold(64 * 1024);

        mcc.setPrimitiveAsString(true);// 设置序列化
    }

    /**
     *
     * <pre><b>功能描述:</b>获取唯一实例.
     *
     * @author :xiezhaodong
     * <b>创建日期 :</b>2012-4-25 上午10:57:41
     *
     * @return
     *
     * <b>修改历史:</b>(修改人,修改时间,修改原因/内容)
     *
     * </pre>
     */
    public static MemcachedUtil getInstance() {

        return memcachedUtil;
    }

    /**
     *
     * <pre><b>功能描述:</b>新增一个缓存数据
     *
     * @author :xiezhaodong
     * <b>创建日期 :</b>2012-4-25 上午10:55:15
     *
     * @param key 缓存的key
     * @param value 缓存的值
     * @return 操作结果

     *
     * <b>修改历史:</b>(修改人,修改时间,修改原因/内容)
     *
     * </pre>
     */
    public boolean add(String key, Object value) {

        // 不会存入缓存
        return mcc.add(key, value);
        // return mcc.set(key, value);
    }

    /**
     *
     * <pre><b>功能描述:</b>新增一个缓存数据
     *
     * @author :xiezhaodong
     * <b>创建日期 :</b>2012-4-25 上午10:56:15
     *
     * @param key 缓存的key
     * @param value 缓存的值
     * @param expiry 缓存过期的时间
     * @return 操作结果
     *
     * <b>修改历史:</b>(修改人,修改时间,修改原因/内容)
     *
     * </pre>
     */
    public boolean add(String key, Object value, Date expiry) {

        // 不会存入缓存
        return mcc.add(key, value, expiry);
        // return mcc.set(key, value, expiry);
    }

    /**
     * <pre><b>功能描述:</b>替换已有的缓存数据
     *
     * @author :xiezhaodong
     * <b>创建日期 :</b>2012-4-25 上午10:55:34
     *
     * @param key 设置对象的key
     * @return Object 设置对象的值
     * @return 是否替换成功
     *
     * <b>修改历史:</b>(修改人,修改时间,修改原因/内容)
     *
     * </pre>
     */
    public boolean replace(String key, Object value) {

        return mcc.replace(key, value);
    }

    /**
     *
     * <pre><b>功能描述:</b>替换已有的缓存数据
     *
     * @author :xiezhaodong
     * <b>创建日期 :</b>2012-4-25 上午10:43:17
     *
     * @param key 设置对象的key
     * @return Object 设置对象的值
     * @param expiry 过期时间
     * @return 是否替换成功
     *
     * <b>修改历史:</b>(修改人,修改时间,修改原因/内容)
     *
     * </pre>
     */
    public boolean replace(String key, Object value, Date expiry) {

        return mcc.replace(key, value, expiry);
    }

    /**
     *
     * <pre><b>功能描述:</b>根据指定的关键字获取对象
     *
     * @author :xiezhaodong
     * <b>创建日期 :</b>2012-4-25 上午10:42:49
     *
     * @param key 获取对象的key
     * @return Object 对象值
     *
     * <b>修改历史:</b>(修改人,修改时间,修改原因/内容)
     *
     * </pre>
     */
    public Object get(String key) {

        return mcc.get(key);
    }
}

对象,必须实现序列化接口

package org.memcached.xiezhaodong.test;

import java.io.Serializable;

/**
 *
 * <pre><b>功能描述:</b>员工类,必须要序列化,否则缓存操作时会报错的
 *
 * @author :xiezhaodong<br>
 *
 * <b>修改历史:</b>(修改人,修改时间,修改原因/内容)
 *
 * </pre>
 */
public class Employee implements Serializable {

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -6487397580836471048L;

    /**
     * 员工名字
     */
    private String EmpName;

    /**
     * 部门名
     */
    private String deptName;

    /**
     * 公司名
     */
    private String companyName;

    /**
     *
     * <b>构造函数:</b>
     *
     */
    public Employee() {

    }

    /**
     * Access method for the empName property
     *
     * @return the empName
     */
    public String getEmpName() {

        return EmpName;
    }

    /**
     * Sets the value of empName the property
     *
     * @param empName the empName to set
     */
    public void setEmpName(String empName) {

        EmpName = empName;
    }

    /**
     * Access method for the deptName property
     *
     * @return the deptName
     */
    public String getDeptName() {

        return deptName;
    }

    /**
     * Sets the value of deptName the property
     *
     * @param deptName the deptName to set
     */
    public void setDeptName(String deptName) {

        this.deptName = deptName;
    }

    /**
     * Access method for the companyName property
     *
     * @return the companyName
     */
    public String getCompanyName() {

        return companyName;
    }

    /**
     * Sets the value of companyName the property
     *
     * @param companyName the companyName to set
     */
    public void setCompanyName(String companyName) {

        this.companyName = companyName;
    }
}

测试类

package org.memcached.xiezhaodong.test;

import com.danga.MemCached.MemCachedClient;

public class MemcachedUtilTest {

	public static void main(String[] args) {

	//	add();

		print();

	}

	private static void print() {
		MemcachedUtil cache = MemcachedUtil.getInstance();
		Employee emp=(Employee) cache.get("emp");
		System.out.println("name:"+emp.getCompanyName());
		System.out.println("dep:"+emp.getDeptName());
		System.out.println("emp"+emp.getEmpName());
	}

	private static void add() {
		MemcachedUtil cache = MemcachedUtil.getInstance();

		Employee emp = new Employee();
		emp.setCompanyName("Kevin's Company");
		emp.setDeptName("R&D Dept");
		emp.setEmpName("Kevin");

		cache.add("emp", emp);
	}
}

一个简单的单机环境就已经搭建好了。其他的还有一些插件,比如说spring集成的memcached插件等等,以后可以去用一下!

转载请注明http://blog.csdn.net/a837199685

时间: 2024-11-02 16:52:29

centos安装memcached和java操作实例的相关文章

【Memcached】linux centos 安装memcached和它的常用基本操作

centos安装memcached 1.查看memcached是否有版本. [[email protected] bin]# yum list memcached Loaded plugins: security base | 3.7 kB 00:00 epel | 4.4 kB 00:00 epel/primary_db | 6.7 MB 00:01 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 4.4 MB

【转】centos安装memcached+php多服务器共享

参考博文: centos安装memcached 源码安装 Yum安装Memcache Memcached内存分配优化及使用问题 <转>php+memcached 实现session共享 一.安装Memcache 1. Yum安装Memcache 查找memcached yum  search  memcached 该命令可以查询yum库中有关memcached的安装包信息,以下是搜寻结果截图: 安装 memcached yum  -y install memcached 该命令用来安装memc

Centos安装Memcached和(Nginx)Memcache扩展详细教程

下载memadmin,下载地址:http://www.junopen.com/memadmin/ 并在IIS新建站点. 测试地址:http://wap.yousawang.com/mem , 1.重启 apache service httpd restrat /etc/init.d/httpd stop /etc/init.d/httpd start 2.重启 mysql service mysqld restart /etc/init.d/mysqld stop /etc/init.d/mys

CentOS安装memcached及配置php的memcache扩展

遇到的问题: 这个问题主要是linux服务器安装memcached服务后,phpinfo信息没有memcache扩展,所以主要是给php安装memcache扩展,教程中是安装memcache扩展,我认为应该是安装memcached扩展,关于这一点不是很明白. 教程链接1:http://blog.csdn.net/hel12he/article/details/45537059 链接2:http://blog.csdn.net/poechant/article/details/6802312 链接

Redis(Windows安装方法与Java调用实例 &amp; 配置文件参数说明 &amp; Java使用Redis所用Jar包 &amp; Redis与Memcached的区别)

Windows下Redis的安装使用 0.前言 因为是初次使用,所以是在windows下进行安装和使用,参考了几篇博客,下面整理一下 1.安装Redis 官方网站:http://redis.io/ 官方下载:http://redis.io/download 可以根据需要下载不同版本 windows版:https://github.com/MSOpenTech/redis github的资源可以ZIP直接下载的(这个是给不知道的同学友情提示下) 下载完成后 可以右键解压到 某个硬盘下 比如D:\R

SysLog简介和java操作实例

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 什么是SysLog SysLog的作用 Java如何连接开发SysLog应用 安装一个syslog服务器syslogwatcher 可以通过Listen和Stop控制是否开启监听 java客户端开发需要引入syslog4jjar包 服务器记录信息如图 这次为大家分享一项日志技术,syslog日志技术.微信公众分享号:lshaids6688 什么是SysLog syslog协议属于一种主从式协议:syslog发送端会传送出一个

centos 安装 memcached

1. 安装依赖: libeventyum install libevent-devel 2. 获取最新版本wget http://memcached.org/latest -O memcached 3. 解压tar -zxvf memcached 4. 进入目录,我当前版本是1.4.30cd memcached-x.x.x 5.生成Makefile 文件./configure 6. 编译make 7. 编译测试make test 8. 将memcached备份到/usr/local/bin目录下

CentOS安装完毕后的操作

系统安装完成后 0.网络 安装费结束后需要修改 # vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes I

java 操作实例

1.日期的加减操作 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateCalculate { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** *