redis安装与Spring Boot使用redis实现session共享

1.Redis在Linux系统安装

Redis 官方网站:http://redis.io
Redis中文官方网站:http://redis.cn/

1.1、安装版本

版本选择:https://download.redis.io/releases/redis-6.2.7.tar.gz

1.2、安装步骤
  • 安装wget命令 & lszrz 命令
yum -y install wget
# 使用wget下载单个文件
## 从网络下载一个文件并保存在当前目录
wget https://download.redis.io/releases/redis-6.2.7.tar.gz
## 使用wget-o下载并以不同的文件名保存
wget -O redis627.tar.gz https://download.redis.io/releases/redis-6.2.7.tar.gz
## 使用wget -limit -rate 限速下载(执行wget时,默认会占用全部可能的带宽下载,当准备下载一个大文件,而你还需要下载其他文件时就有必要限速了)
wget --limit-rate=300K https://download.redis.io/releases/redis-6.2.7.tar.gz

# ----------------------------------
yum install -y lrzsz
  • 安装C语言的编译环境
yum -y install gcc gcc-c++ kernel-devel
  • 测试gcc版本
gcc --version
#gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)
#Copyright (C) 2018 Free Software Foundation, Inc.
#This is free software; see the source for copying conditions.  There is NO
#warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • 将下载的redis-6.2.7.tar.gz方/opt目录
  • 解压上传的包或wget命令直接下载
tar -xzvf redis-6.2.7.tar.gz 
  • 进入解压的目录
cd redis-6.2.7/
  • 执行make命令编译
make
cd src && make all
make[1]: Entering directory '/opt/redis-6.2.7/src'
    CC Makefile.dep
前台启动

(注:不推荐,因为前台启动,命令行窗口不能关闭,否则服务停止)

./redis-server 
后台启动
  • 拷贝一份redis.conf 到其他目录,如/myredis
[root@iZ2zeizrxxn52st7yye6vuZ /]# cp /opt/redis-6.2.7/redis.conf /myredis/
  • 修改redis.conf(259行)文件将里面的daemonize no 改成 yes,让服务在后台启动
  • Redis启动(注:安装目录是/usr/local/bin/,所以在/usr/local/bin/下执行下面的命令)
./redis-server /myredis/redis.conf
  • 用客户端连接访问
./redis-cli 
  • 指定端口访问
./redis-cli -p 6379
  • 测试验证
127.0.0.1:6379> ping
PONG
  • Redis关闭
# 第一种进入终端后关闭
shutdown
# 第二种查找出进程后杀死进程
ps -ef|grep redis
kill -9 [查找出的进程号]

2、spring boot使用redis实现session共享

  • 依旧进入redis的配置文件里(redis.conf)
    在这里插入图片描述
    把bind 127.0.0.1 -::1注掉(默认情况bind=127.0.0.1只能接受本机的访问请求)
    不写的情况下无限制接受任何ip的访问

  • 把protected-mode yes 改为 no(yes表示只支持本机访问,no表示支持远程访问)
    在这里插入图片描述

  • 设置密码
    在这里插入图片描述

  • 上面的改完之后重新启动redis,也就是把进程结束后,再次启动redis服务。

  • 关闭防火墙,或者把端口加进去,使端口能够正常接受远程访问

java里的代码
  • 所需依赖
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  • properties配置文件
#RedisIP地址和端口号
spring.redis.host=
spring.redis.port=
#Redis的密码
spring.redis.password=
  • 第二个同理,只需要在spring boot里新建一个模块,在配置里改一下端口号即可
    (例:server.port=9090)
  • 测试
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;

@RestController
public class UserHandler {
    @RequestMapping(value = "/first", method = RequestMethod.GET)
    public Map<String, Object> firstResp (HttpServletRequest request){
        Map<String, Object> map = new HashMap<>();
        request.getSession().setAttribute("request Url", request.getRequestURL());
        map.put("request Url", request.getRequestURL());
        return map;
    }

    @RequestMapping(value = "/sessions", method = RequestMethod.GET)
    public Object sessions (HttpServletRequest request){
        Map<String, Object> map = new HashMap<>();
        map.put("sessionId", request.getSession().getId());
        map.put("message", request.getSession().getAttribute("map"));

        return map;
    }
}
  • 第二个模块里同上
测试结果

在这里插入图片描述

在这里插入图片描述
可以看到两个连接的sessionId是同样的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值