1. 集群环境下的管理HTTPSSession所遇到的问题
一台服务器对应这个一个session对象,无法在另外一个服务器互通
解决方法:
1. Session 的 Replication(复制)将当前服务器中使用的session全部复制到其他服务器上
缺陷:Session数据冗余 浪费内存资源
缺陷:存在单节点故障,容易操作数据丢失
3. Cookie的保存状态
缺陷:也就时Cookie的缺点:存储数据量小,浏览器关闭cookie消失,数据暴露不安全,cookie存储中文数据必须要额外处理
4. 通过redis 或者Memcahe等分布式缓存集中管理Session
具体的思路:
Session存redis中因为要跨网络。session需要实现序列化 key = sessionId value=session
Cookie = jsessionid
Jedis.get(“jsessionid”) ===session
通过Redis 集中管理session的开发步骤:
1、在tomcat的lib目录中导入
tomcat-redis-session-manager-1.2-tomcat-6.jar
jedis-2.0.0.jar
commons-pool-1.6
2、在tomcat的conf目录中修改context.xml配置文件
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="192.168.1.105"
port="6379"
maxInactiveInterval="60"/>
配置
java中的实体类需要实现序列化接口
注意:实现序列化的目的不仅仅是将对象写入到文件中更多的是可以进行对象的网络传输所谓的复制session就是通过一个流
将session传过来session中的对象也要传过来,所以session中存储的对象要实现序列化,而包装类型已经实现了系列化
网络中传输实体的方式
优点:序列化,效率高,序列化后传输的是二进的内容 基于传输层 (内网, tcp ,局域网)
JSON:传输的是字符串 基于应用层 http 互联网
与mybatis日志系统的集成
redis的分片
1. 为什么要分片?
例如:将1000万的数据量拆分成 10个100万的数据量 使用10个redis服务器进行处理 这个
是分而治之的思想可以提高查询效率。
2. 怎样实现分别片
Redis2.x 通过程序员自己实现 (客户端的分片)
支持分片的特性 (又叫服务器分片)
3. 如何知道数据对应哪个redis进行存储
redis 有几个redis就对几取模
Redis分片的开发步骤
redis3.x的特性
特点:1.支持sharding 支持master-slaver
2.支持auto failover(自动故障切换), 如果从节点发现主节点宕机 那么会自动称为主节点
注意:Redis2 与redis3 只在集群方面有区别其他没有区别
Redis充当web缓存的概念
Redis中key的设计
1、查询有几种情况?
1. 通过主键查询 id
2 .通过其他条件查询 sql
2. key 的设计
3. redis的副本集
为什么需要副本集:放置单节点故障
Redis副本集的架构
Redis 副本集的开发步骤:
1. 复制redis.conf 的配置文件 一份为主一份为从 修改端口号port
在从的配置文件中添加
slaveof <masterip> <masterport>