1、安装依赖包
yum -y install gcc libevent libevent-devel
2、安装memcached
下载memcached , 如memcached-1.5.2.tar.gz
解压到: /usr/local/memcached-1.5.2
cd /usr/local/memcached-1.5.2
./configure --prefix=/usr/local/memcached && make && make install
3、启动memcached
在一台机器上开启2个memcached进程, 端口不同 12000 和 12001 , 2台机器就可以开4个进程,形成一个集群,
/usr/local/memcached/bin/memcached -d -u root -l 192.168.8.111 -p 12000 -m 256 -c 100 -P /usr/local/memcached/memcached_12000.pid
/usr/local/memcached/bin/memcached -d -u root -l 192.168.8.111 -p 12001 -m 256 -c 100 -P /usr/local/memcached/memcached_12001.pid
启动参数:
-p 设置TCP端口号(默认设置为: 11211)
-U UDP监听端口(默认: 11211, 0 时关闭)
-l 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)
-c max simultaneous connections (default: 1024)
-d 以daemon方式运行
-u 绑定使用指定用于运行进程
-m 允许最大内存用量,单位M (默认: 64 MB)
-P 将PID写入文件,这样可以使得后边进行快速进程终止, 需要与-d 一起使用
/usr/local/memcached/bin/memcached -d -u root -l 192.168.8.111 -p 12000 -m 10 -c 100 -P /tmp/memcached_12000.pid
#选项说明,这里只列出比较重要的选项,具体选项说明使用memcached -h来查阅
-p TCP端口,默认为11211,可以不设置
-U UDP端口,默认为11211,0为关闭
-l 监听的ip地址
-d 守护进程(daemon)
-u 指定用户,如果当前为 root ,需要使用此参数指定用户
-m 最大内存,单位MB。默认64MB,32位操作系统,每个进程最多只能使用2GB,64位无限制
-M 禁止LRU策略,内存耗尽时返回错误,而不是删除数据
-c 最大连接数,默认是1024
-vv 查看日志
-P memcache的pid文件,结束memcache进程:kill `cat /tmp/memcached_12000.pid`
-f 增长因子,默认1.25
-n 初始chunk=key+suffix+value+32结构体,默认48字节
-L 启用大内存页,可以降低内存浪费,改进性能
-t 线程数,默认4。由于memcached采用NIO,所以更多线程没有太多作用
-R 每个event连接最大并发数,默认20
-C 禁用CAS命令(可以禁止版本计数,减少开销)
-I 每次申请内存的页的大小(page),默认1M,最小1k,最大128M
-F 禁用flush_all
4、连接
telnet 127.0.0.1 12000
5、基本命令
常用命令 set / add / replace / get / delete / flush_all
set / add / replace
格式为:
command
参数 |
用法 |
key |
key 用于查找缓存值 |
flags |
可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 |
expiration time |
在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) |
bytes |
在缓存中存储的字节点 |
value |
存储的值(始终位于第二行) |
set : 命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。
set cid 0 0 5 10011
向缓存中添加了一个键值对,其键为cid ,其值为10011。并将过期时间设置为 0,这将向 memcached 通知将此值存储在缓存中直到删除它为止
replace: 仅当键已经存在时,replace 命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应。
replace cid 0 0 5 10015
get : get 命令用于检索与之前添加的键值对相关的值。您将使用 get 执行大多数检索操作。
get cid
delete : delete 命令用于删除 memcached 中的任何现有值。您将使用一个键调用delete,如果该键存在于缓存中,则删除该值。如果不存在,则返回一条NOT_FOUND 消息。
delete cid
stats : 查看memcached 实例的当前统计数据,显示了关于当前 memcached 实例的信息。
flush_all : 命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处
6、 简单的Spring 整合 memcahced
<dependency>
<groupId>com.googlecode.xmemcachedgroupId>
<artifactId>xmemcachedartifactId>
<version>2.0.0version>
dependency>
192.168.8.111:12000 192.168.8.111:12001
1
2
package cn.utils.memcached;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import net.rubyeye.xmemcached.MemcachedClient;
public class MemcachedTest {
private static MemcachedClient client = null ;
private static final Integer defaultExp = 60 * 60 * 24 ;// 一天
public static void main(String[] args) throws Exception {
@SuppressWarnings("resource")
ApplicationContext app = new ClassPathXmlApplicationContext("classpath:applicationContext-memcached.xml") ;
if(client == null){
client = (MemcachedClient)app.getBean("memcachedClient") ;
}
client.add("name", 5, "abc") ;
Thread.sleep(5000);
Object object = client.get("name");
System.out.println(object);
}
/**
* @param key
* @param exp 单位S(秒)
* @param value
* @return
*/
public static boolean add(String key , Integer exp , Object value ){
try {
if(exp == null){
exp = defaultExp ;
}
return client.add(key, exp, value) ;
} catch (Exception e) {
}
return false ;
}
}
1、configure: error: newly created file is older than distributed files!
原因是linux系统时间慢了很多;
设置linux日期:date -s ‘2018-01-28 16:28:00’
时间和日期需要分开设置。
然后在 ./configure就不会报错了