zoukankan      html  css  js  c++  java
  • memcache初探

      一、概念:memcached:一个高性能的分布式的内存对象缓存系统,用来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表,能够用来存储各种格式的数据,包括图像、视频、文件及数据库检索的结果等,简单的说就是将数据调到内存中,然后从内存中读取,从而大大提高读取速度。

        memcached是以key-value的方式进行数据存储的,key《=250个字符,value<=1M,memcached默认过期时间是30days。

      二、Windows下安装:

      1、将下载的压缩包解压到某个目录下。

      2、输入cmd,打开命令行窗口,转到刚才解压的目录下。

      3、输入memcached.exe -d install进行安装(如果提示failed to install or...,解决办法是在C:/Windows/system32目录下找到cmd.exe文件,右击以管理员身份运行便可)

      4、安装完后输入memcached -d start启动服务,便可在任务管理器的服务窗口看到memcached。

      

    三、memcached启动参数描述:

    -d :启动一个守护进程,

    -m:分配给Memcache使用的内存数量,单位是MB,默认是64MB,

    -u :运行Memcache的用户

    -l  :监听的服务器IP地址

    -p :设置Memcache监听的端口,默认是11211    注:-p(p为小写)

    -c :设置最大并发连接数,默认是1024

    -P :设置保存Memcache的pid文件   注:-P(P为大写)

    如果要结束Memcache进程,执行:kill cat pid文件路径

    四:java操作memecached具体步骤如下:

      1、首先引用4个jar包:

        commons-pool-1.5.6.jar

        java_memcached-release_2.6.6.jar

        slf4j-api-1.6.1.jar

        slf4j-simple-1.6.1.jar

      2、操作代码如下:

        

     1 import com.danga.MemCached.MemCachedClient;
     2 import com.danga.MemCached.SockIOPool;
     3 import com.keytec.bean.User;
     4 
     5 public class MemcachedTest {
     6 
     7     protected static MemCachedClient mcc = new MemCachedClient();
     8     protected static MemcachedTest mt = new MemcachedTest();
     9     //设置与缓存服务器的连接池
    10     static{
    11         //服务器列表及其权重
    12         String[] servers = {"127.0.0.1:11211"};
    13         Integer[] weights = {3};
    14         
    15         //获取socket连接池的实例对象
    16         SockIOPool pool = SockIOPool.getInstance();
    17         
    18         //设置服务器信息
    19         pool.setServers(servers);
    20         pool.setWeights(weights);
    21         
    22         //设置初始连接数、最小和最大连接数及最大处理时间
    23         pool.setInitConn(5);
    24         pool.setMinConn(5);
    25         pool.setMaxConn(250);
    26         pool.setMaxIdle(1000 * 60 * 60 * 6);
    27         
    28         //设置主线程的睡眠时间
    29         pool.setMaintSleep(30);
    30         
    31         //设置TCP的参数,连接超时等
    32         pool.setNagle(false);
    33         pool.setSocketTO(3000);
    34         pool.setSocketConnectTO(0);
    35         
    36         //初始化连接池
    37         pool.initialize();
    38         
    39         //压缩设置,超过指定大小(单位为K)的数据都会被压缩
    40 //        mcc.setCompressEnable(true);
    41 //        mcc.setCompressThreshold(64 * 1024);
    42     }
    43     
    44     protected MemcachedTest(){}
    45     
    46     public static MemcachedTest getInstance(){
    47         return mt;
    48     }
    49     
    50     //添加指定的值到缓存中
    51     public boolean add(String key,Object value){
    52         return mcc.add(key, value);
    53     }
    54     
    55     public boolean add(String key,Object value,Date expiry){
    56         return mcc.add(key, value, expiry);
    57     }
    58     
    59     public boolean replace(String key,Object value){
    60         return mcc.replace(key, value);
    61     }
    62     
    63     public boolean replace(String key,Object value,Date expiry){
    64         return mcc.replace(key, value, expiry);
    65     }
    66     
    67     public Object get(String key){
    68         return mcc.get(key);
    69     }
    70     
    71     public static void main(String[] args) {
    72         MemcachedTest memCache = MemcachedTest.getInstance();
    73         memCache.add("hello", 123);
    74         System.err.println("get value from cache:" + memCache.get("hello"));
    75         User user = new User();
    76         user.setUserName("zhangli");
    77         user.setPassword("123");
    78         memCache.add("user", user);
    79         User cuser = (User)memCache.get("user");
    80         System.err.println("cached user:" + cuser.getUserName());
    81         cuser.setUserName("cuihongwei");
    82         cuser = (User)memCache.get("user");
    83         System.err.println("cached user:" + cuser.getUserName());
    84         memCache.replace("user", cuser);
    85         cuser = (User)memCache.get("user");
    86         System.err.println("cached user:" + cuser.getUserName());
    87     }
    88 
    89 }

    注:存放的对象必须被实例化。

  • 相关阅读:
    如何判断网页中引入jquery
    回车事件jquery
    bootcss
    jquery 固定导航
    vs2012常用快捷键总结
    网页上新闻,多余内容用....(省略号)代替
    git的使用
    vue获取点击事件源的方法
    JS实现复制功能
    AdminLTE 学习笔记
  • 原文地址:https://www.cnblogs.com/zhli/p/3642639.html
Copyright © 2011-2022 走看看