首页 > 编程语言 >Java_memcached-release 安装 原理 实例

Java_memcached-release 安装 原理 实例

时间:2023-06-14 10:07:10浏览次数:53  
标签:设置 Java String sUpool 连接数 key release memcached


 Java_memcached-release 安装 原理 实例 

 

一、了解和使用使用安装memcached

在这一块已经有车了,就不再造了。

一个日本君写的:长野雅广memcached-全面剖析.pdf

heiyeluren(黑夜路人)  Memcached-原理和使用详解.pdf

 

 

二、java memcached客启端的调用

    2.1 下载客户端jar包 java_memcached-release_X.x.jar

       https://github.com/gwhalin/Memcached-Java-Client可下载最新

三、简单Demo

    建工程、拷jar包、再拷下面代码。

 

package com.ea.online.memcache;

 import java.util.Date;

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

 public class SimpleMemCachedClient {

     protected static MemCachedClient mcc = new MemCachedClient();
     protected static SockIOPool sUpool = null;
     static {
         String[] servers = { "localhost:11211" };
         Integer[] weights = { 3, 3, 2 };

         sUpool = SockIOPool.getInstance();
         sUpool.setServers(servers);
         sUpool.setWeights(weights);
         sUpool.setMaintSleep(30);
         sUpool.setNagle(false);
         sUpool.setSocketTO(3000);
         sUpool.setSocketConnectTO(0);
         sUpool.initialize();
     }

     public static void main(String[] args) {
         mcc.set("testKey", "This is a test String",
                 new Date(new Date().getTime() + 10000));// 过期时间为10秒
         String bar = mcc.get("testKey").toString();

         System.out.println("testKey-->" + bar);
         while (true) {
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
             System.out.println(mcc.get("testKey"));
         }
     }
 }

 

Demo 成功后就讲 下面两个类的一些设置参数:SockIOPool、MemCachedClient

四、SockIOPool 是socket连接池类

   

setServers(String[] servers):设置服务器信息数组;
setWeights(String[] weights):设置服务器权重数组;
setInitConn(int count):设置初始连接数;
setMinConn(int minConn):设置最小连接数;
setMaxConn(int maxConn):设置最大连接数;
setMaxIdle(long arg0):设置最大处理时间;
setMaintSleep(long arg0):主线程的睡眠时间;
initialize():初始化连接池。

 

五、MemCachedClient类及其常用方法

   

add(String key, Object value):添加一个键值对到缓存中;
add(String key, Object value,Date expires):添加一个键值对到缓存中,并设置其超时时间;
set(String key, Object value):在缓存中设置一个键的值;
set(String key, Object value, Date expires):在缓存中设置一个键的值,并设置其超时时间;
get(String key):获得某个键的值。
incr(String key):为某个键上的值执行+1操作;
decr(String key):为某个键上的值执行-1操作;
replace(String key, String value):将某个键的值替换成新的值;
replace(String key, String value, Date expires):将某个键的值替换成新的值,并设置其超时时间。

 

六、Memcached 优化

    可以参考: hyj_dx  http://hyj-dx.iteye.com/blog/305161

 

 

 

1、客户端在与 memcached 服务建立连接之后,进行存取对象的操作,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。

2、当存入cached的数据超过了cached的容量后会将最长时间没调用的对象挤出,这正好应征了cached的特征。

3、利用memcached常用的做法:在每取得一次cached对象后,重新设置这个对象的cache时间,这样能够使得经常被调用的对象可以长期滞留在缓存中,使得效率增倍。

 

memcached 技术配置参数研究

failover表示对于服务器出现问题时的自动修复。
initConn初始的时候连接数,
minConn表示最小闲置连接数,
maxConn最大连接数,
maintSleep表示是否需要延时结束
nagle是TCP对于socket创建的算法,
socketTO是socket连接超时时间,
aliveCheck表示心跳检查,确定服务器的状态。
Servers是memcached服务端开的地址和ip列表字符串,
weights是上面服务器的权重,必须数量一致,否则权重无效
可从以下几方面考虑优化
1. 重新设置配置参数。
2. 尽量使用小容量的数据内容.
3. 增加memcached提高服务获取的内存总量、提高命中率。
4. 可以采用多个memcache服务进行侦听,分开处理,针对服务提供的频繁度划分服务内存
5. 根据服务器的性能不同设置权重 weights
6. 对需要使用memcache服务的机器ip,服务端做访问限制。
避免memcached里的数据不会被别有心意的人再利用,或责保证服务器的内存不被漫天遍地的垃圾数据所堆积,造成命中极低
7. 优化memcached客户端的代码。

 

、、、、、、、、、、

 

七、小技巧

  h 显示帮助

-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

 

----------------------------

memcached是以KEY-VALUE的方式进行数据存储的
KEY的大小限制:Key(max)<=250个字符;
VALUE在存储时有限制:Value(max)<= 1M;
memcached默认过期时间:ExpiresTime(max)= 30(days)。

--------------------------------

 

附件在我的资源中有

 

参考资料 http://blog.charlee.li/memcached-pdf/

 

 

标签:设置,Java,String,sUpool,连接数,key,release,memcached
From: https://blog.51cto.com/u_16160131/6475551

相关文章

  • mac下安装memcached
     mac下安装memcached 更多memcached信息可以参考http://www.ibm.com/developerworks/cn/java/j-memcached1/ memcached是由DangaInteractive开发并使用BSD许可的一种通用的分布式内存缓存系统。DangaInteractive开发memcached的目的是创建一个内存缓存系统来处理其......
  • mac下nginx+tomcat+memcached集群配置和共享session
     mac下nginx+tomcat+memcached集群配置和共享session  首先分别安装nginx(版本1.5.8)、tomcat(版本7.0)、memcached(版本1.4.17),具体安装说明请分别参考下面的文章。 nginx安装说明 http://stephen830.iteye.com/blog/2002195tomcat安装说明http://stephen830.iteye.com/blog/2001......
  • javascript现代编程系列教程之二——IIFE
    IIFE(ImmediatelyInvokedFunctionExpression,立即执行函数表达式)是一个在定义后立即执行的JavaScript函数。它具有以下特点:是一个匿名函数:通常情况下,IIFE是一个没有名字的函数,称为匿名函数。立即执行:这个函数在声明后立即被调用并执行,而无需手动调用。创建局部作用域:它创建......
  • javascript现代编程系列教程之一:区块作用域对VAR不起作用的问题
    在JavaScript中,使用var声明的变量具有函数作用域,而不是块级作用域。这意味着在一个函数内部,使用var声明的变量在整个函数范围内都是可见的,包括嵌套的块(如if语句、for循环等)。为了避免区块对var不起作用的问题,你可以采用以下方法:使用let和const代替var:从ECMAScript2015(ES6)开始,引......
  • 深入剖析创建Java虚拟机的实现方法
    经过前文《深入剖析java.c文件中JavaMain方法中InitializeJVM的实现》的分析,找到了创建Java虚拟机具体实现的方法Threads::create_vm((JavaVMInitArgs*)args,&can_try_again)。该方法的实现在src\hotspot\share\runtime\threads.cpp文件,我去掉了部分英文注释和宏条件代码,代码更......
  • JavaScript 全局对象参考手册 encodeURIComponent() 函数
    JavaScriptencodeURIComponent()函数JavaScript全局对象参考手册定义和用法encodeURIComponent()函数可把字符串作为URI组件进行编码。语法encodeURIComponent(URIstring)  参数描述URIstring必需。一个字符串,含有URI组件或其他要编码的文本。返回值URIstring的副......
  • JavaScript 全局对象参考手册 eval() 函数
    JavaScripteval()函数JavaScript全局对象参考手册定义和用法eval()函数可计算某个字符串,并执行其中的的JavaScript代码。语法eval(string)  参数描述string必需。要计算的字符串,其中含有要计算的JavaScript表达式或要执行的语句。返回值通过计算string得到的值(如果......
  • Java多线程与静态方法
    Java多线程与静态方法在多线程中使用静态方法会发生什么事?也就是说多线程访问同一个类的static静态方法会发生什么事?是否会发生线程安全问题? publicclassTest{publicstaticvoidoperation(){//...dosomething}} 事实证明只要在静态函数中没有处理多......
  • Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
     Redis入门–Jedis存储Java对象-(Java序列化为byte数组方式) 在Jedis开发中,我们很多时候希望直接把一个对象放到Redis中,然后在需要的时候取出来。Redis的key和value都支持二进制安全的字符串,存储Java对象不是问题,下面我们看一下如何来实现。 1要存储的对象现在写一个很土的J......
  • Java中使用Jedis操作Redis
     Java中使用Jedis操作Redis 请使用jdk1.7版本   Jedis链接池packagecom.stephen.redis;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importcom.stephen.utility.DateTool;importredis.clients.jedis.Jedis;importredis.clients.jedis.......