Redis实现Session共享详解

发布时间:2025-09-27 点击:10
redis实现session共享
这几天在做session共享这么一个小模块,也查了好多资料,给我的感觉,就是太乱了,一直找不到我想要的东西,几乎全部实现方法都与我的想法不一样,在这里,我总结一下自己是如何用redis实现session共享的,方便自己以后查询,也希望能给有这方面需求的朋友一些帮助。
相关专题推荐:php session (包含图文、视频、案例)
先说一下我的开发环境:nginx、redis、tomcat,用moven构建项目,jetty服务器运行,所以在这里,下面也会涉及一下如何用maven打war包,部署在tomcat上运行。
redis是一个key-value数据库,存值取值,全靠这个key了,这里啰嗦一句,因为原创,专业的介绍我就不粘贴了,想了解的官方介绍的可以自行search.
pom.xml中配置:
<!-- redis --> <dependency> <groupid>redis.clients</groupid> <artifactid>jedis</artifactid> <version>2.8.1</version> </dependency> <dependency> <groupid>org.springframework.data</groupid> <artifactid>spring-data-redis</artifactid> <version>1.7.2.release</version> </dependency>aplicationcontext-redis.xml中配置
<!-- redis 客户端配置 --> <bean id="jedispoolconfig" class="redis.clients.jedis.jedispoolconfig"> <property name="maxtotal" value="${jedispoolconfig.maxtotal}"/> <property name="maxidle" value="${jedispoolconfig.maxidle}"/> <property name="maxwaitmillis" value="${jedispoolconfig.maxwaitmillis}"/> <property name="testwhileidle" value="true"/> <property name="testonborrow" value="false"/> <property name="testonreturn" value="false"/> </bean> <bean id="readjedisconnectionfactory" class="org.springframework.data.redis.connection.jedis.jedisconnectionfactory"> <property name="hostname" value="${jedis.read.host}" /> <property name="port" value="${jedis.read.port}" /> <property name="password" value="${jedis.read.password}" /> <property name="timeout" value="${jedis.read.timeout}" /> <property name="database" value="${jedis.read.database}" /> <property name="poolconfig" ref="jedispoolconfig" /> </bean> <bean id="writejedisconnectionfactory" class="org.springframework.data.redis.connection.jedis.jedisconnectionfactory"> <property name="hostname" value="${jedis.write.host}" /> <property name="port" value="${jedis.write.port}" /> <property name="password" value="${jedis.write.password}" /> <property name="timeout" value="${jedis.write.timeout}" /> <property name="database" value="${jedis.write.database}" /> <property name="poolconfig" ref="jedispoolconfig" /> </bean> <bean id="readredistemplate" class="org.springframework.data.redis.core.stringredistemplate"> <property name="connectionfactory" ref="readjedisconnectionfactory" /> </bean> <bean id="writeredistemplate" class="org.springframework.data.redis.core.stringredistemplate"> <property name="connectionfactory" ref="writejedisconnectionfactory" /> </bean>配置完毕后,开始代码实现:
在logincontroller里:
第一步,引入redistemplate
@autowired @qualifier("writeredistemplate") private stringredistemplate writetemplate;这里只需要引入writeredistemplate即可,在登陆的时候,只负责写,只有在再次刷新的时候,经过过滤器,才需要读
第二步,正常登陆流程,登陆成功之后,request还要保存session信息
第三步,设置cookie值,把作为保存usersession信息在redis中的key值存入cookie,刷新浏览器的时候,过滤器可以从cookie中取到key值,进而去redis取对应的value值,即usersession
string domain = request.getservername(); string cookieid=md5util.md5encode("uasloginer", "utf-8"); //生成token,用作session在redis存储中的key值 stringredissessi

mysql表怎么加注释
域名怎么找回-域名及账户问题
网站空间哪个速度快
云主机与服务器端租用
买了阿里云服务器流量需要钱吗
哪些域名是工信部批复的域名 哪些域名才是可以注册的
百度云服务器出问题了吗
用友陈强兵:云服务激活企业数字化