创建一个使用了srping的mavne项目,这里我们借助spring-session来实现。
添加依赖
1 | xml复制代码 <!--redis的依赖--> |
配置文件
1 | bash复制代码#地址 |
启用Redis Http会话
1 | less复制代码@Configuration |
项目到这里就已经实现了Redis管理session了。
使用分析
接下来我们一起分析一段代码:
1 | ini复制代码 @RequestMapping() |
输出结果: 当你第一次访问的时候 会输出 size:1 ,第二次访问的时候 会输出 size:2, 第三次访问的时候 会输出 size:2 ,以后无论你访问多少次 都是输出 size:2
结果解读:
当你第一次访问的时候这时候redis并没有session,得到的session是服务器的session对象及Java对象,这时候自然输出 size:1
当你第二次访问的时候这时候redis有session,得到的session是从redis里面拿到 list的size为1 进行add操作 size变为2 此时你并没有把新的list更新到redis的list,所以redis的list的size还是1
往后都是这样…………
思考:那为什么不适用redis的session管理,下面的代码就有效呢?因为JVM管理的session在堆中的地址是不会变的 所以list在堆中的地址也不会变
代码优化
1 | java复制代码 /** |
1 | scss复制代码 //移除session redis管理的话到redis移除 |
本文转载自: 掘金