memcached win64位服务端安装和java客户端实例

来源:互联网 发布:非广播多路访问网络 编辑:程序博客网 时间:2024/05/16 12:06

项目开发中需要用到memcached缓存记录下来相关操作方便日后复习,如果有错误或遗漏请留言。

memcached服务端安装

下载安装包

下载地址

32位系统 1.4.4版本:http://static.runoob.com/download/memcached-win32-1.4.4-14.zip

64位系统 1.4.4版本:http://static.runoob.com/download/memcached-win64-1.4.4-14.zip

安装

1.解压下载的服务端安装包到指定目录c:/memcached下

2.打开cmd黑窗口 进入解压目录下

3.安装

memcached.exe -d install
4.启动

memcached.exe -d start
5.卸载 需要时执行

memcached.exe -d stopmemcached.exe -d uninstall

注意:必须先停止memecached后才能卸载。

连接

1.语法

telnet host port
host memcached服务端IP地址

port memcached服务端接口

例如:

telnet 127.0.0.1 11211

操作数据

具体参考:http://www.runoob.com/memcached/memcached-set-data.html

java客户端实例

1.解压java客户端将所有jar包放到项目中

2.编写工具类

package com.demo.util;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Date;import java.util.Properties;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;/** * memcached缓存基本操作 2017-6-1 lg * */public class Memcached {        private static Memcached instance = new Memcached();        /**     * memcached客户端     */    private static MemCachedClient mcc;    private int serverAmount = 0;//memcached服务器数量        private String url = "/memcached.properties";//配置文件地址 根据实际情况调整        /**     * 私有构造方法     */    private Memcached(){        try {            Properties pro = new Properties();            pro.load(Memcached.class.getResource(url).openStream());                        String[] servers = pro.getProperty("servers").split(",");//memcached服务器连接地址和端口号                        serverAmount = servers.length;//服务器数量                        SockIOPool pool = SockIOPool.getInstance();            pool.setServers(servers);            pool.setFailover(Boolean.valueOf(pro.get("failover").toString()));//当memcached服务器失效的时候是否连接下一个memcached服务器            pool.setInitConn(Integer.valueOf(pro.get("initConn").toString()));//初始化连接服务器连接数量            pool.setMinConn(Integer.valueOf(pro.get("minConn").toString()));//服务器最小连接数量            pool.setMaxConn(Integer.valueOf(pro.get("maxConn").toString()));//服务器最大连接数量            pool.setMaxIdle(Long.valueOf(pro.get("maxIdle").toString()));//连接最长空闲时间 毫秒            pool.setMaintSleep(Long.valueOf(pro.get("maintSleep").toString()));//自查线程周期进行工作,其每次休眠时间            pool.setNagle(Boolean.valueOf(pro.get("nagle").toString()));            pool.setSocketTO(Integer.valueOf(pro.get("socketTO").toString()));            pool.setAliveCheck(Boolean.valueOf(pro.get("aliveCheck").toString()));//是否检查memcached服务器是否失效            pool.initialize();                        //memcached客户端            mcc = new MemCachedClient();                    } catch (Exception e) {            e.printStackTrace();        }    }        /**     * 获取唯一实例     * @return     */    public static Memcached getInstance(){        return instance;    }        /**     * 新增     * @param key    键     * @param value    值     * @return     */    public boolean add(String key,Object value){        if (serverAmount == 1) {//只拥有一个memcached服务器            return mcc.set(key, value);//直接保存数据        } else {            int num = serverNumber(key);//数据应保存的服务器标记            return mcc.set(key, value, num);        }    }        /**     * 新增     * @param key    键     * @param value    值     * @param millisecond 数据过期时间 单位毫秒     * @return     */    public boolean add(String key,Object value,int millisecond){        if (serverAmount == 1) {//只拥有一个memcached服务器            return mcc.set(key, value, new Date(millisecond));//直接保存数据        } else {            int num = serverNumber(key);//数据应保存的服务器标记            return mcc.set(key, value, new Date(millisecond), num);        }    }        /**     * 删除     * @param key 键     * @return     */    public boolean delete(String key){        if (serverAmount == 1) {//只拥有一个memcached服务器            return mcc.delete(key);        } else {            int num = serverNumber(key);//数据应保存的服务器标记            return mcc.delete(key, num, null);        }    }        /**     * 修改     * @param key    键     * @param value    值     * @return     */    public boolean update(String key,Object value){        if (serverAmount == 1) {//只拥有一个memcached服务器            return mcc.replace(key, value);        } else {            int num = serverNumber(key);//数据应保存的服务器标记            return mcc.replace(key, value, num);        }    }        /**     * 修改     * @param key    键     * @param value    值     * @param millisecond 数据过期时间 单位毫秒     * @return     */    public boolean update(String key,Object value,int millisecond){        if (serverAmount == 1) {//只拥有一个memcached服务器            return mcc.replace(key, value, new Date(millisecond));        } else {            int num = serverNumber(key);//数据应保存的服务器标记            return mcc.replace(key, value, new Date(millisecond), num);        }    }        /**     * 查询     * @param key     * @return     */    public Object query(String key){        if (serverAmount == 1) {//只拥有一个memcached服务器            return mcc.get(key, 0);//直接查询数据        } else {            int num = serverNumber(key);//数据应保存的服务器标记            return mcc.get(key, num);        }    }        /**     * 计算数据应该保存到哪个memcached服务器 返回服务器标记     * @param key 键     * @return     */    public int serverNumber(String key){        int tem01 = key.hashCode();//主键字节码        int tem02 = tem01 % serverAmount;//所属服务器标记 = 键字节码 % 服务器数量        return tem02;    }}

3.编写配置文件

#mecached配置信息#memcached服务器连接地址和端口号 多个已逗号间隔servers=192.168.1.111:11211,192.168.1.109:11211#当memcached服务器失效的时候是否连接下一个memcached服务器failover=true#初始化连接服务器连接数量initConn=10#服务器最小连接数量minConn=5#服务器最大连接数量maxConn=250#连接最长空闲时间 毫秒maxIdle=3600000#自查线程周期进行工作,其每次休眠时间maintSleep=30#nagle=false#socketTO=3000#是否检查memcached服务器是否失效aliveCheck=true


原创粉丝点击