揭穿伪装下的Redis共享(伪共享redis)
session
Redis共享session是应用到Web应用服务器集群中最常用的一种技术,可以解决session数据存在不同服务器上时,用户在不同服务器之间来回时某些会话信息丢失的问题。为了让用户看到实际上的Web应用服务器集群的功能,技术开发者会使用Redis来加以利用。
理论上,从用户的角度来看,Redis共享session是一种伪装技术,用户可以像平时一样使用Web浏览器,但实际上,Web应用服务器集群用Redis共享session,把用户会话信息存放到一个共享的存储空间中,无论用户仅访问一台服务器,还是访问多台服务器,所有的会话信息都存储在共享空间中。技术开发者只需要将每个Web应用服务器集群配置连接相同的Redis服务,并将其配置到Redis服务器上即可,其中的Redis存储空间就是用来存储所有的会话信息的。
下面就来看看Redis共享session的实现代码:
先创建配置文件,此文件中存储我们所需要的Redis信息:
“`yml
# Redis配置信息
host:localhost
port:6379
db: 0
password:
timeout:300
然后,需要在我们的Tomcat服务器中启用Redis会话共享,使用如下的XML来进行配置:
```xml
maxActiveSessions="1000" minIdleSwap="0"
maxIdleSwap="-1" maxIdleBackup="0" newSessionThreshold="10" sessionBackupAsync="false"
sessionMaxAliveTime="6000"/>
host="localhost" database="0" password="password" port="6379"
timeout="300" sessionBackupAsync="false"
sessionMaxAliveTime="3600"/>
使用Java代码来实现Redis共享会话,该代码演示了如何从Redis中存取会话,并将这些实现逻辑用户建立到Tomcat服务器里:
“`java
//加载配置文件
Properties properties = new Properties();
properties.load(InputStream in);
//创建连接Redis的客户端
JedisConenctionFactory connectionFactory = new JedisConenctionFactory(properties);
//获取客户端
Jedis client = connectionFactory.getClient();
//创建会话
HttpSession session = new HttpSession();
//将会话信息存入Redis
client.set(“sessionId”, session.getId());
//获取会话信息
String sessionId = client.get(“sessionId”);
//关闭客户端连接
connectionFactory.close();
总结: Redis共享session是一种广泛应用的解决方案,它在Web应用服务器集群中有效地实现了会话数据的共享。无论是配置文件,XML配置,还是Java代码实现,都是伪装下的Redis共享session的共同技术。