简介
Memcached是一个开源的,高性能的,内存分布式缓存系统。其用意是缓存结果,避免再次计算或者访问数据库,从而提高服务的效率。
Memcahced是基于内存的key-value存储,用来存储任意的小块的数据,包括序列化的对象,因为他是存储在内存中,所以访问快速,但是也决定了不可能存储太多的东西。因为他是分布式的所以可以在多台机器上配置,每一个server之间是不进行通讯的,所以不知道彼此存储的是什么东西。
而且Memcached是一种基于客户端的分布式缓存系统,意思是说它的路由算法是在客户端上,客户端来决定缓存到哪个一个服务器上。
安装与配置
Memcached 是基于libevent的所以我们要先装libevent(这个玩意是一个用C编写的高性能的通知库,具体的不用管它)。
- 安装libevent
首先我们先看看本地系统是不是已经自带了libevent: rpm -qa libevent,
rpm -qa 的意思查询所有rmp安装的package。
如果已经安装了那么 rpm -e xx 删掉就可以了。
如果你的Linux的系统可以联网,那么使用yum安装就可以了,
yum install libevent libevent-deve
我的机器是没有配置联网的所以我使用另外一种方式:首先下载gz包
解压到当前目录:
tar -zxvf libevent-2.0.21-stable.tar.gz
配置安装路径
./configure --prefix=/root/training/libevent
编译之后并安装
make
make install
- 安装Memcached
同样,如果可以联网的话 使用yum来安装
yum install memcached
不能联网就下载tar 下载地址
同样是先tar -zxvf 解压,不在赘述。
配置安装路径,并指明libevent的安装路径。
./configure --prefix=/root/training/memcached --with-libevent=/root/trainging/libevent
同样编译之后安装
make
make install
到此memcached就安装好了
memcached没有提供可视化的操作界面,但是我们可以使用telenet来连接memcached,
首先需要启动Memcached,进入Memcached的安装目录的bin目录下,列出其帮助文档:
./memcached -h
-d是启动一个守护进程;
-m是分配给Memcache使用的内存数量,单位是MB;
-u是运行Memcache的用户;
-l是监听的服务器IP地址,可以有多个地址;
-p是设置Memcache监听的端口,,最好是1024以上的端口;
-c是最大运行的并发连接数,默认是1024;
-P是设置保存Memcache的pid文件。
./memcached -u root -d -m 256
指定root用户启动server,内存是256M
此时可以用用ps命令查看一下memcached进程
ps -ef|grep memcached
Memcached的操作
首先使用telnet 连接memcached,默认端口是11211
telnet 127.0.0.1 11211
- set命令,用于保存数据,将value保存到指定的key中,如果已经存在则户覆盖掉原来的
set key1 0 0 4
abcd
set后面的第一个key1表示的是键值对中的key,
第二参数表示是一个数字标志位一般是0,
第三个是参数表示存储的时间,单位是秒,0表示永久存储
第四个参数表示的字节数byte
最后一个表示的是value
上面有个STORED表示的是保存成功,如果保存失败会出现一个ERROR。
add命令也是保存,但是如果key已经存在,则不会覆盖原来的:
可以看到如果key已经存在了,则会NOT_STORED表示保存不成功replace替换已经存在的key的value值,如果key不存在的话,同样报NOT_STORED
replace key2 0 0 5
12345
STORED
get key2
VALUE key2 0 5
12345
END
ERROR
replace key3 0 0 5
12345
NOT_STORED
- append向已经存在的key的value后面追加数据
- prepend向已经存在的key的value的前面追加数据
- get命令用于查找
gets命令用于查找多个key
delete删除
incr用于自增,decr用于自减
stats用于统计各种信息
简直不要太多JAVA API连接Memcached
下载jar包的 连接,如果下载不下来可以下载我上传的倒CSDN的
https://download.csdn.net/download/u010741032/10594260
这个JAVA API 操作很简单:
public static void main(String[] args) {
try {
MemcachedClient client =
new MemcachedClient(new InetSocketAddress("192.168.246.111", 11211));
client.set("key3", 0, "123456778");
System.out.println(client.get("key3"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
默认端口是11211,如果多个server实例的话,可以传一个InetSocketAddress的list给客户端。
先到这儿下次再介绍存储原理,和路由规则。
欢迎关注我的微信号: manong_xiaodong