Java Memcached

Memcached

Memcached是一个免费开源、高性能、分布式的内存对象缓存系统。Memcached使用二级hash实现缓存,一级缓存实现资源存放节点的确认,二级缓存获得具体Key对应的Value。

memcached搭建缓存系统

Windows上的Memcached安装

ResourceDownload

安装流程

  1. cmd执行“memcached.exe -d install”,安装memcached。
  2. memcached.exe -d start,守护进程形式的启动Windows服务。
    -p 监听的端口
    -l 连接的IP地址, 默认是本机
    -d start 启动memcached服务
    -d restart 重起memcached服务
    -d stop|shutdown 关闭正在运行的memcached服务
    -d install 安装memcached服务
    -d uninstall 卸载memcached服务
    -u 以的身份运行 (仅在以root运行的时候有效)
    -m 最大内存使用,单位MB。默认64MB
    -M 内存耗尽时返回错误,而不是删除项
    -c 最大同时连接数,默认是1024
    -f 块大小增长因子,默认是1.25
    -n 最小分配空间,key+value+flags默认是48
    -h 显示帮助

3.telnet ip:port 进入Memcached
stats 显示所有信息

Java调用Memcached

1.添加相应的jar包
2.相关实现代码

package utils.cache;

import java.util.Date;

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


/** * 使用memcached的缓存实用类. * * @author CPP * */
public class MemCached {
    // 创建全局的唯一实例
    protected static MemCachedClient mcc = new MemCachedClient();

    protected static MemCached memCached = new MemCached();

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

        // 获取socke连接池的实例对象
        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 );
    }

    /** * 保护型构造方法,不允许实例化! * */
    protected MemCached()
    {

    }

    /** * 获取唯一实例. * @return */
    public static MemCached getInstance()
    {
        return memCached;
    }

    /** * 添加一个指定的值到缓存中. * @param key * @param value * @return */
    public boolean add(String key, Object value)
    {
        return mcc.add(key, value);
    }

    public boolean add(String key, Object value, Date expiry)
    {
        return mcc.add(key, value, expiry);
    }

    public boolean replace(String key, Object value)
    {
        return mcc.replace(key, value);
    }

    public boolean replace(String key, Object value, Date expiry)
    {
        return mcc.replace(key, value, expiry);
    }

    /** * 根据指定的关键字获取对象. * @param key * @return */
    public Object get(String key)
    {
        return mcc.get(key);
    }

    public static void main(String[] args)
    {
        MemCached cache = MemCached.getInstance();
        cache.add("hello", 234);
        System.out.print("get value : " + cache.get("hello"));
    }
}

示例代码

示例代码,实现Memcached对Hibernate读取的数据库实体的缓存,并给予Lambda实现stream流的fillter数据处理;

Download

你可能感兴趣的:(windows,Stream,memcached,lambda)