1.Memcached简介
Memcached
只支持能序列化的数据类型,不支持持久化,基于
Key-Value
的内存缓存系统。
memcached虽然没有像redis
所具备的数据持久化功能,比如
RDB
和
AOF
都没有,但是可以通过做集群同步的方式, 让各memcached
服务器的数据进行同步,从而实现数据的一致性,即保证各
memcached
的数据是一样的,即使有任何一台 memcached
发生故障,只要集群中有一台
memcached
可用就不会出现数据丢失,当其他memcached
重新加入到集群的时候
,
可以自动从有数据的
memcached
当中自动获取数据并提供服务。
Memcached
借助了操作系统的
libevent
工具做高效的读写。
libevent
是个程序库,它将
Linux
的
epoll、
BSD类操作系统的
kqueue
等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高性能。memcached
使用这个
libevent
库,因此能在
Linux
、
BSD
、
Solaris
等操作系统上发挥其高性能Memcached 支持最大的内存存储对象为
1M
,超过
1M
的数据可以使用客户端压缩或拆分报包放到key中,比较大的数据在进行读取的时候需要消耗的时间比较长,
memcached
最适合保存用户的session实现
session
共享Memcached存储数据时
, Memcached
会去申请
1MB
的内存
,
把该块内存称为一个
slab,
也称为一个
page Memcached 支持多种开发语言,
包括:
JAVA,C,Python,PHP,C#,Ruby,Perl
等
1.memcached的安装与启动
[root@tomcat ~]# yum install memcached -y
[root@tomcat ~]# vim /etc/sysconfig/memcached
修改里面的参数:(60主机同理)
[root@tomcat ~]# systemctl enable --now memcached
[root@tomcat ~]# netstat -antlupe | grep memcache
2.memcached 操作命令
五种基本
memcached
命令执行最简单的操作。这些命令和操作包括:
set
add
replace
get
delete
#前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令,都使用如下所示的语法:
command <key> <flags> <expiration time> <bytes>
参数说明如下:
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节数
value 存储的值(始终位于第二行)
#增加key,过期时间为秒,bytes为存储数据的字节数
add key flags exptime bytes
2.session 共享服务器
msm
(
memcached session manager
)提供将
Tomcat
的
session
保持到
memcached
可以实现高可用。
1.配置所需参数
(可在官网
https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
查照找)
kryo-3.0.3.jar
asm-5.2.jar
objenesis-2.6.jar
reflectasm-1.11.9.jar
minlog-1.3.1.jar
kryo-serializers-0.45.jar
msm-kryo-serializer-2.3.2.jar
memcached-session-manager-tc9-2.3.2.jar
spymemcached-2.12.3.jar
memcached-session-manager-2.3.2.jar
[root@tomcat-1 ~]# vim /usr/local/tomcat/conf/context.xml(60主机同理)
保存退出,重新启动
修改
nginx
配置:
[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf
最后测试:
停止60 的服务
地址主机切换成50 ,并且数据还会保存并未更新。