• SpringBoot整合redis/解决session共享问题


    SpringBoot整合redis

    1、导入依赖, redis相关依赖

    <!-- 配置使用redis启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    2、 在SpringBoot的配置文件中配置redis相关信息:(开启一个redis,ip端口一致

    spring:
      #redis相关的信息
      redis: 
        host: 127.0.0.1
        port: 6379

    3、给entity实体类实现Serializable接口

    操作redis: SpringBoot创建RedisTemplate的bean, 4、在service 使用RedisTemplate操作redis

    测试:

    @Service
    public class EmployeeServiceImpl implements IEmployeeService {
        @Autowired
        private EmployeeMapper empMapper;
        
        @Autowired
        private RedisTemplate redisTemplate;
    
        @Override
        public Employee queryOne(int empno) throws Exception {
            String key = "emp_"+empno;
            if(redisTemplate.hasKey(key)) {
                return (Employee)redisTemplate.opsForValue().get(key);
            }
            Employee emp = empMapper.queryById(empno);
            redisTemplate.opsForValue().set(key, emp, 7, TimeUnit.DAYS);
            return emp;
        }

    SpringBoot 解决session共享问题

    Tomcat集群 --> nginx 

    1、添加Session共享的依赖

    <!-- 配置使用redis启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>  
    <!-- session共享的依赖 -->
    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-data-redis</artifactId>
    </dependency>

    测试:

    1、首先关闭热部署

    2、启动一个tomcat

    #端口
    server:
      port: 8888

    更改端口在启动一个tomcat

    #端口
    server:
      port: 9999

    编写一个测试TestSessionController.java,返回json页面数据

    //@Controller
    //@ResponseBody    //表示这个Controller类所有的方法响应的数据
    @RestController  //@Controller 与@ResponseBody 组合注解
    //如果json, 响应给前端的数据乱码,  添加这个: produces = "application/json;charset=utf-8"
    @RequestMapping(value="session",produces = "application/json;charset=utf-8")
    public class TestSessionController {
        @Value("${server.port}")
        private Integer port;
    @GetMapping(value = "set" ) public String set(HttpSession session) throws Exception { session.setAttribute("name", "张三"); return "端口号为:"+port+",Tomcat服务器处理了您的请求"; } @GetMapping(value = "get" ) public String get(HttpSession session) throws Exception { return "端口号为:"+port+",Tomcat服务器处理了您的请求,获取的到数据:"+session.getAttribute("name"); }

    开启nginx 。

    注意:  使用redis,  先关闭Tomcat, 再关闭redis服务器

  • 相关阅读:
    数据库
    Xpath表达式
    错误:向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们
    xmlhttp status各类Http请求状态(status)及其含义
    配置ckeditor3.0 和ckfinder
    程序默认用管理员身份打开(vs2010)
    (转)CKFinder破解的方法,去掉提示
    无法嵌入互操作类型“SHDocVw.ShellWindowsClass”。请改用适用的接口
    ASP.NET页面执行顺序
    回调函数
  • 原文地址:https://www.cnblogs.com/64Byte/p/13262818.html
Copyright © 2020-2023  润新知