tomcat的session会话保持

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主机同理) ![](https://i-blog.csdnimg.cn/direct/d7190f1fd89246749a622100eb2eda11.png) 保存退出,重新启动 修改 nginx 配置: \[root@Nginx \~\]# vim /usr/local/nginx/conf.d/vhosts.conf ![](https://i-blog.csdnimg.cn/direct/d8485f3eb94146e1b1694ff42c31bc8a.png) **最后测试:** ![](https://i-blog.csdnimg.cn/direct/c6b357932f5644d0b0009cad73f8e170.png) 停止60 的服务 ![](https://i-blog.csdnimg.cn/direct/41422489958f46c9b184574cce4444e5.png) ![](https://i-blog.csdnimg.cn/direct/bf36872254124ca18e8c1f7346b61851.png) 地址主机切换成50 ,并且数据还会保存并未更新。

相关推荐
小晶晶京京2 分钟前
day38-HTTP
网络·网络协议·学习·http
前端世界3 分钟前
鸿蒙应用网络开发实战:HTTP、WebSocket、文件下载与网络检测全攻略
网络·http·harmonyos
Warren982 小时前
Spring Boot 拦截器返回中文乱码的解决方案(附全局优化思路)
java·网络·spring boot·redis·后端·junit·lua
西红柿维生素2 小时前
Sentinel相关记录
网络·sentinel
Bruce_Liuxiaowei3 小时前
使用批处理脚本安全清理Windows系统垃圾
网络·windows·安全·网络安全
王廷胡_白嫖帝3 小时前
Qt网络速度测试工具开发教程 - 从零开始构建网络测速应用
开发语言·网络·qt
青草地溪水旁11 小时前
如何理解AP服务发现协议中“如果某项服务需要被配置为可通过多个不同的网络接口进行访问,则应为每个网络接口使用一个独立的客户端服务实例”?
网络·服务发现·客户端实例
门思科技11 小时前
LoRaWAN 的网络拓扑全解析:架构、原理与应用实践
服务器·网络·人工智能·科技·物联网·架构
我的收藏手册11 小时前
Linux 网络命令大全
linux·服务器·网络
焊锡与代码齐飞12 小时前
嵌入式第三十五课!!Linux下的网络编程
linux·运维·服务器·开发语言·网络·学习·算法