简单实现MemCachedUtil

package com.chauvet.utils.memcached;

import com.chauvet.utils.ConfigUtil;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class MemcacheUtil {

    private static MemcacheUtil util;
    private static MemCachedClient cache = new MemCachedClient();       

    private MemcacheUtil() {
    }

    public static MemcacheUtil getInstance() {
        if (util == null) {
            util = new MemcacheUtil();
        }
        return util;
    }

    static {
        ConfigUtil configUtil = ConfigUtil.getInstance();
        String memcacheServer = configUtil.getMemcacheServer(); // 从配置文件中获取memcache服务器地址
        System.out.println(memcacheServer);

        String[] servers ={// 设置缓存服务器列表,当使用分布式缓存的时,可以指定多个缓存服务器。
                    memcacheServer
                    /**
                     * IP:端口,
                     * IP:端口,
                     * IP:端口
                     */
                };       

        Integer[] weights = { 3 }; // 设置服务器权重

        //创建一个实例对象SockIOPool
        SockIOPool pool = SockIOPool.getInstance();       

        // 设置servers 和  weights
        pool.setServers( servers );
        pool.setWeights( weights );       

        // set some basic pool settings
        // 5 initial, 5 min, and 250 max conns
        // and set the max idle time for a conn
        // to 6 hours
        pool.setInitConn( 5 );
        pool.setMinConn( 5 );
        pool.setMaxConn( 250 );
        pool.setMaxIdle( 1000 * 60 * 60 * 6 );       

        // set the sleep for the maint thread
        // it will wake up every x seconds and
        // maintain the pool size
        pool.setMaintSleep( 30 );       

        // Tcp的规则就是在发送一个包之前,本地机器会等待远程主机
        // 对上一次发送的包的确认信息到来;这个方法就可以关闭套接字的缓存,
        // 以至这个包准备好了就发;
        pool.setNagle( false );
        //连接建立后对超时的控制
        pool.setSocketTO( 3000 );
        //连接建立时对超时的控制
        pool.setSocketConnectTO( 0 );       

        // initialize the connection pool
        //初始化一些值并与MemutildServer段建立连接
        pool.initialize();    

        // lets set some compression on for the client
        // compress anything larger than 64k
        //cache.setCompressEnable( true );
        //cache.setCompressThreshold( 64 * 1024 );
    }       

    public static void buildCacheWithKey(String key,String value){
        cache.set(key, value); // 将key存入缓存
    }

    public static void bulidCache(){
        //set(key,value,Date) ,Date是一个过期时间,如果想让这个过期时间生效的话,这里传递的new Date(long date) 中参数date,需要是个大于或等于1000的值。
        //因为java client的实现源码里是这样实现的 expiry.getTime() / 1000 ,也就是说,如果 小于1000的值,除以1000以后都是0,即永不过期
        cache.set("DEVICE_NETWORK_TYPE:01A111201406010214", "bulidCacheSuccess",0);
    }

    /** 清空cache**/
    public static void flushAll(){
        cache.flushAll();
    }

    public Object getValue(String key) {
        return cache.get(key);
    }       

    public static void main(String[] args){
        flushAll();
         bulidCache();
        //MemCachedUtil.buildCacheWithKey("wwwwwww");
        Object obj = MemcacheUtil.getInstance().getValue("DEVICE_NETWORK_TYPE:01A111201406010214");
        System.out.println(obj);
    }     

}
时间: 2024-10-13 11:10:11

简单实现MemCachedUtil的相关文章

memcached window版 下载安装,简单测试

官网: http://www.memcached.org/ 只有tag格式的,搞了好久都没找到windows版的,还有很多uri找不开,google的都打不开,中国政府就是威武. 下载地址: http://jehiah.cz/projects/memcached-win32/files/memcached-1.2.1-win32.zip 这个用讯雷可以下载下来! 错误: 通过cmd命令行进入到D:\webEve\memcached(下载后的解压目录) 运行 memcached.exe -d in

C# Ping 简单使用

编程过程中,有时候需要判断主机是否在线,最简单的方法就是使用Windows的Ping命令看看能否ping通.看到网上很多文章,说用C#去调用windows的ping.exe,然后解析返回的字符串.我觉得这种方式太麻烦了,就做一下简单判断,不想弄那么麻烦. 查了一下,C#专门提供了一个Ping类,与Windows下的ping命令类似: 命令空间: System.Net.NetworkInformation; 使用方法: bool online = false; //是否在线 Ping ping =

自动生成简单四则运算的C语言程序

该程序是在博客园里面找的,具体是谁的找了半天没找到,无法提供它原本的链接.由于自己写的过于简单,且有一些功能暂时无法实现,所以就找了一个来应付作业,望原谅.在这个程序的源码中我改了一个错误的地方,源码中有这样一个随机数发生器的初始化函数的语句:"srand((unsigned)time(NULL))".srand函数是随机数发生器的初始化函数.但是正确的写法应该是:srand(unsigned( time(NULL))):为了防止随机数每次重复,常常使用系统时间来初始化,即使用time

Mysql的锁机制与PHP文件锁处理高并发简单思路

以购买商品举例: ① 从数据库获取库存的数量. ② 检查一下库存的数量是否充足. ③ 库存的数量减去买家购买的数量(以每个用户购买一个为例). ④ 最后完成购买. 仅仅这几行逻辑代码在并发的情况下会出现问题,自己可以想象一下. 这里暂时就不测试了,下面会针对并发的处理给出测试结果. 创建表: CREATE TABLE `warehouse` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `stock` int(11) NOT NULL

Winfrom 简单的安卓手机屏幕获取和安卓简单操作

为啥我要做这个东西了,是因为经常要用投影演示app ,现在有很多这样的软件可以把手机界面投到电脑上 ,但都要安装,比如说360的手机助手,我又讨厌安装,于是就自己捣鼓了下 做了这个东西, 实现了以下简单功能   1.屏幕获取(因为是截图方式获取的,所以有点卡顿) 2.实现点击功能,并在点击的时候出现一个手势图标,方便用户观看 3.实现简单的滑动功能 4.实现在界面上画图功能 5.实现拖拽安装apk功能 操作说明:鼠标左边 模拟手机点击,中键停止/开始刷新界面(画图的时候不能刷新),右键去掉画图内

iOS instruments之ui automation的简单使用(高手绕道)

最近使用了几次instruments中的automation工具,现记录下automation的简单使用方法,希望对没接触过自动化测试又有需求的人有所帮助.  UI 自动测试是iOS 中重要的附加功能,它由名为"Automation"的新的工具对象支持.Automation工具的脚本是用JavaScript语言编写,主要用于分析应用的性能和用户行为,模仿/击发被请求的事件,利用它可以完成对被测应用的简单的UI测试及相关功能测试. 一. 简单的录制脚本 打开xcode,这里用我为我家亲爱

Android ExpandableListView 带有Checkbox的简单应用

expandablelistview2_groups.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=&qu

Android ExpandableListView的简单应用

Expandablelistview1Activity.java package com.wangzhu.demoexpandablelistview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widg

一个简单的主机管理模拟程序

最近写的一个小练习,主要是把前面学的东西整合一下.写了一个简单的主机管理界面,主要是练习以下知识点: Session和Cookie进行登录验证(装饰器) 数据库的基本操作 (单表,1对多,多对多) Form的简单使用实现验证 Bootstrap模板写个简单界面 自定义分页 信号,中间件,CSRF,模板语言,JavaScript,AJAX等等 界面比较low,毕竟不是专业的. 附件里面是Django的源代码,3个文件放在一起winrar解压就可以打开