[原]Redis共享Session原理及示例

标签: | 发表时间:2018-09-17 22:04 | 作者:moxiaomomo
出处:https://blog.csdn.net/moxiaomomo

Redis共享session的作用

  • 微服务自身可以保持无状态,应用实例数量的多少不会影响用户登录状态;
  • 可实现单点登录的踢出功能,如可以让上次异地登录的用户下线;
  • session在多个服务或服务器间共享,实现多站点单点登录(参考SSO服务)

Redis缓存session原理简述

其工作原理,可简单用图描述(假设服务A运行有有个多个实例):
在这里插入图片描述

Springboot-session结合Redis示例

  • 添加maven依赖
  		<dependency>  
				<groupId>org.springframework.boot</groupId>  
				<artifactId>spring-boot-starter-redis</artifactId>
				<version>1.4.0.RELEASE</version>
		</dependency>  
		<dependency>  
				<groupId>org.springframework.session</groupId>  
				<artifactId>spring-session-data-redis</artifactId>  
		</dependency>
		<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session</artifactId>
			<version>1.3.3.RELEASE</version>
		</dependency>
  • 添加redis配置(application.properties)
  spring.redis.database=1  
spring.redis.host=localhost
spring.redis.password=xxxxx
spring.redis.port=6379

# server.port=8080
server.port=8081
  • 添加配置类
     package com.example.demo.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@Configuration  
@EnableRedisHttpSession  
public class RedisSessionConfig {  
}
  • 添加controller
     package com.example.demo.controller;

import java.util.*;
import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@RestController  
@RequestMapping(value = "/")
public class Hello {  
    @RequestMapping(value = "/set", method = RequestMethod.GET)  
    public Map<String, Object> firstResp (HttpServletRequest request){           
        request.getSession().setAttribute("testKey", "testValue");

        Map<String, Object> map = new HashMap<>(); 
        map.put("testKey", "testValue");  
        return map;
    }
  
    @RequestMapping(value = "/query", method = RequestMethod.GET)  
    public Object sessions (HttpServletRequest request){
        Map<String, Object> map = new HashMap<>();
        map.put("sessionId", request.getSession().getId());
        map.put("testKey", request.getSession().getAttribute("testKey"));
        return map;
    }
} 
  • 浏览器访问测试

    • 启动两个springboot程序,分别监听8080,8081端口
    • 浏览器分别访问 http://127.0.0.1:8080/set, 127.0.0.1:8081/query接口,效果如下:
      在这里插入图片描述
    • 查看redis中的key
      在这里插入图片描述

可以看出两个独立的应用已经共享了同一个session。

作者:moxiaomomo 发表于 2018/09/17 22:04:51 原文链接 https://blog.csdn.net/moxiaomomo/article/details/82749865
阅读:6

相关 [redis 共享 session] 推荐:

spring boot + redis 实现session共享

- - 编程语言 - ITeye博客
这次带来的是spring boot + redis 实现session共享的教程. 在spring boot的文档中,告诉我们添加@EnableRedisHttpSession来开启spring session支持,配置如下:. 而@EnableRedisHttpSession这个注解是由spring-session-data-redis提供的,所以在pom.xml文件中添加: .

nginx+tomcat+redis完成session共享

- - 企业架构 - ITeye博客
本文记录nginx+redis+tomcat实现session共享的过程. nginx安装: http://blog.csdn.net/grhlove123/article/details/47834673. redis安装: http://blog.csdn.net/grhlove123/article/details/47783471.

[原]Redis共享Session原理及示例

- - moxiaomomo的专栏
Redis共享session的作用. 微服务自身可以保持无状态,应用实例数量的多少不会影响用户登录状态;. 可实现单点登录的踢出功能,如可以让上次异地登录的用户下线;. session在多个服务或服务器间共享,实现多站点单点登录(参考SSO服务). Redis缓存session原理简述. 其工作原理,可简单用图描述(假设服务A运行有有个多个实例):.

Tomcat7集群共享Session 基于redis进行统一管理

- - 行业应用 - ITeye博客
      很多时候,生产环境,需要多个tomcat协作,那么session的统一管理是一个首先需要解决的问题. session的统一管理有很多解决方案,比如存储至数据库、memcache、redis. 那么我想给大家介绍的是将session存储至redis这个方案.        先要感谢开源项目 tomcat-redis-session-manager,感谢作者.

tomcat集群(共享session)

- - 研发管理 - ITeye博客
其实就是上述这样的一个架构,下面是原理. 1)  Apache装有一个模块,这个模块叫mod_jk. 2)  Apache通过80端口负责解析任何静态web内容. 3)  任何不能解析的内容,用表达式告诉mod_jk,让mod_jk派发给相关的app server去解释. 通过上述的文字描述我们可以得知:.

集群session共享机制

- - 企业架构 - ITeye博客
        现在集群中使用的Session共享机制有两种,分别是session复制和session粘性.        该种方式下,负载均衡器会根据各个node的状态,把每个request进行分发,使用这样的测试,必须在多个node之间复制用户的session,实时保持整个集群中用户的状态同步.

Nginx+Tomcat+Memcached共享session集群配置

- ENOCH - ITeye论坛最新讨论
2、memcached共享session. 3、tomcat集群配置(3台CentOS 6). (172.18.188.64): 操作系统CentOS 6; 安装nginx、memcached和tomcat 6. (172.18.188.76): 操作系统CentOS 6; 安装tomcat 6. (172.18.188.78): 操作系统CentOS 6; 安装tomcat 6.

Apache负载均衡实战-session共享

- - 企业架构 - ITeye博客
              含Session共享. 下载Apache、tomcat.     2个或者多个tomcat. 将此文件添加到目录F:\Apache24\modules. 1 修改Apache conf目录下的httpd.conf. 2 新建mod_jk.conf文件. 在目录F:\Apache24\conf下添加文件,内容如下:.

使用 Redis 来存储 Apache Tomcat 7 的 Session

- - 编程语言 - ITeye博客
使用  Redis 服务器来存储Session非常有优势. 首先它是一个NOSQL数据,第二它很容易扩展使用. This kind of setup would lead to a clear understanding of how  Redis can behave as cache as well as a session storing system.

Apache+Tomcat+Memcached共享Session的构架设计

- - CSDN博客架构设计推荐文章
一、       方案目标. 实现互动留言系统、后台发布系统的高可用性,有效解决高并发量对单台应用服务器的冲击,确保应用服务器单点故障不影响系统正常运行. 二、       部署架构. 采取Tomcat集群的部署方式,Apache通过proxy_module代理方式对用户的请求进行负载均衡,转发至tomcat集群中的某一实例进行处理,tomcat集群之间通过Memcached高性能缓存集群共享持久Session.