Spring Session Redis最佳实践(1)简单入门

欢迎转至站内查看原文,链接为:https://www.chendd.cn/information/viewInformation/experienceShare/309.a

如果你关注Spring Session JDBC的实现可关注前面一篇文章。本文所谓的Spring Session Redis的简单入门,主要是根据github上的Spring Session项目源码实践而来,具体是从该项目中摘一些示例代码,按照需要,修改而来。

目录

本文目标

最佳实践

总结一下

源码下载


本文目标

实现基于Redis的Spring Session管理(不含Redis的搭建过程),spring-session-data-redis的版本为2.1.3.RELEASE,依赖的Spring版本为5.1.4.RELEASE,实现一个分布式的Session管理示例,多个服务器(端口不同)下session数据一致。

最佳实践

(一)Maven依赖



    org.springframework.session
    spring-session-data-redis
    2.1.3.RELEASE


    redis.clients
    jedis
    2.9.1


    org.springframework
    spring-web
    5.1.4.RELEASE



    javax.servlet
    javax.servlet-api
    4.0.1
    provided


    jstl
    jstl
    1.2



    org.slf4j
    slf4j-api
    1.7.7


    ch.qos.logback
    logback-core
    1.1.7


    ch.qos.logback
    logback-access
    1.1.7


    ch.qos.logback
    logback-classic
    1.1.7



    com.alibaba
    fastjson
    1.2.58

(二)session.xml参数配置



    
        
            classpath:spring-config-redis.properties
        
    








    
    
    
    
    

(三)页面示例效果--session在不同服务器上的数据共享

Spring Session Redis最佳实践(1)简单入门_第1张图片

(同一个session在8080服务器保存的数据)

Spring Session Redis最佳实践(1)简单入门_第2张图片

(同一个session在8888服务器保存的数据)

总结一下

(1)前面的 jedisConnectionFactory 对象配置属性时,IDEA中给出了一些属性设置时是过期的,为了屏蔽过期的属性显示,故写成了 p:port 的写法,正常使用 property 属性声明即可;

(2)当logback的日志级别为debug时,启动时控制台会有错误的堆栈日志输出,但它不算是错,将日志级别调整为info后可以屏蔽,参考如下图所示:

Spring Session Redis最佳实践(1)简单入门_第3张图片

(3)既然数据已经存储至Redis了,一起来分析一下它存的都是些什么值,比如浏览器创建了一个Session ID,对应的Redis下对应了3条数据(与之前的JDBC一致),参考如下:

Spring Session Redis最佳实践(1)简单入门_第4张图片

在Redis中查看其具体的数值信息,发现它默认存储的数据为Java序列化后的数据,它的具体数值存储的有一些个具体的属性值,如过期时间、sessionKey等等,还有一些看起来不能识别的特殊字符,它们都是Java序列化存储的结果,详细如下图所示:

Spring Session Redis最佳实践(1)简单入门_第5张图片

--查看某个session ID的对象数据
127.0.0.1:6379[5]> hgetall "spring:session:sessions:c3c007d3-fdd9-4ccf-ae55-1e8a53404cdf"
--查看某个session ID的某个属性
127.0.0.1:6379[5]> hget "spring:session:sessions:c3c007d3-fdd9-4ccf-ae55-1e8a53404cdf" "creationTime"

(4)其实我是Redis新手,如果要问我上面的命令是如何总结出来的,我会说我有使用Jedis客户端连接后,使用它提供的Java Api进行的分析,比如它里面有个 type 函数,我们可以知道这个session ID存储的到底是个什么类型的结构,以及使用这个结构找到其对应的取数函数将数据给显示出来。

源码下载

https://gitee.com/88911006/chendd-examples

 

 

你可能感兴趣的:(Spring,Session)