springboot整合redis详细教程

spring boot 整合 redis 详细教程

注意:本次实验环境 是将 redis 安装在 CentOS7.x-86_x64 中 教程中用到的软件(VMware Workstation Pro、postman、idea、Another Redis Desktop Manager、FinalShell(xshell也可)、DBeaver(数据库客户端就行))

一、下载并解压Redis

1、执行下面的命令下载redis:

wget https://download.redis.io/releases/redis-6.2.6.tar.gz

2、解压redis:

tar xzf redis-6.2.6.tar.gz

3、移动redis目录,一般都会将redis目录放置到 /usr/local/redis目录:

mv redis-6.2.6 /usr/local/redis

二、编译并安装redis

1、进入redis安装目录,执行make命令编译redis:

cd /usr/local/redis

make

等待make命令执行完成即可。

如果执行make命令报错:cc 未找到命令,原因是虚拟机系统中缺少gcc,执行下面命令安装gcc:

yum -y install gcc automake autoconf libtool make

如果执行make命令报错:致命错误:jemalloc/jemalloc.h: 没有那个文件或目录,则需要在make指定分配器为libc。执行下面命令即可正常编译:

make MALLOC=libc

make命令执行完,redis就编译完成了。

2、执行下面命令安装redis,并指定安装目录

make install PREFIX=/usr/local/redis

至此,redis即安装成功。

三、启动redis

1、进入redis安装目录,执行下面命令启动redis服务

./bin/redis-server redis.conf

此时,可以看到redis服务被成功启动:

但这种启动方式不能退出控制台,如果退出,那么redis服务也会停止。如果想要redis以后台方式运行,需要修改redis的配置文件:redis.conf。将该配置文件中的daemonize no改为daemonize yes即可:

修改完成后,重新执行启动命令启动redis,然后通过下面命令查看redis进程,可以发现redis服务已经被启动了:

ps -ef | grep redis

如图所示:

2、通过redis-cli测试redis是否可用,在redis安装目录执行下面命令:

在redis安装目录下执行命令

./bin/redis-cli

此处我们通过下面命令随便set一个字符串类型的值,key是test,value是hello:

set test hello

然后通过下面命令get出test这个key的value值:

get test

测试没有问题,至此,redis在我们的Linux服务器上就已经安装完成了。

3、通过 Another Redis Desktop Manager 客户端连接 redis,执行下面命令:

3.1、输入连接信息 (连接前 接的关闭防火墙)

3.2 测试命令

三、spring boot整合redis

1、在 pom.xml 中引入redis依赖

   		<!--redis-->
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>3.0.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.11.1</version>
        </dependency>

2、在 application.yml 中配置连接

server:
  port: 8084

spring:
  datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://192.168.159.130:3306/school
      username: root
      password: H@ppy2022
      #上面是数据库连接信息
  redis:
    database: 0   #redis的0号数据库
    host: 192.168.159.130
    port: 6379
    password: 123456
    jedis:
      pool:
        max-active: 5000
        max-wait: -1
        min-idle: 1
        max-idle: 100
	#上面是redis连接信息
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
  global-config:
    db-config:
      logic-delete-field: delFlag
  mapper-locations: classpath:mapper/*.xml

3、创建实体类

@Data
@ApiModel(value = "用户实体类",description = "")
@TableName("user")
public class UserModel implements Serializable {
    /**
     * 序号ID
     */
    @ApiModelProperty(name = "序号ID", notes = "")
    @TableId(type = IdType.AUTO)
    private Integer cosId;
    /**
     * 用户账号
     */
    @ApiModelProperty(name = "用户账号", notes = "")
    private String cosUser;
    /**
     * 用户密码
     */
    @ApiModelProperty(name = "用户密码", notes = "")
    private String cosPassword;
}

4、在数据库中建表

5、创建 controller

import org.springframework.data.redis.core.RedisTemplate;
@RestController
@RequestMapping("user")
@Api(tags = "资源查询类接口")
@Slf4j
public class UserController {
    @Resource
    private UserService userService;
    //这是redis的jar中的
    @Resource
    private RedisTemplate redisTemplate;

    @PostMapping(value = "/set")
    @ApiOperation(value = "redis set")
    public void set(@RequestBody UserModel userModel){
		//用 json格式 传 userModel 实例对象 具体看postman 测试
        redisTemplate.opsForValue().set("user",userModel,3600, TimeUnit.SECONDS);
        log.info("redis 存入 启动");
    }
    @GetMapping(value = "/get/{key}")
    @ApiOperation(value = "redis get")
    public UserModel getData(@PathVariable("key") String key ) {
        log.info("redis 取出 启动");
        UserModel userModel=(UserModel)redisTemplate.opsForValue().get(key);
        System.out.println(userModel);
        return (UserModel)redisTemplate.opsForValue().get(key);
    }
    @DeleteMapping("/delete/{key}")
    public boolean delete(@PathVariable("key") String key)
    {
        //true = 失败  false = 成功
        redisTemplate.delete(key);
        return redisTemplate.hasKey(key);
    }

四、用postman进行redis的存取测试

1、查看客户端的可key情况

可以看到暂时是没有key的

2、现在用postman存一个key

如图所示:调用接口成功

3、查看客户端key情况

如图所示:可以看到存入了 一个key 且可以看到存入的过期时间

在这里插入图片描述

4、用postman查看key情况

如图所示:可以看到postman获取了 一个key

五、过程中问题解决

1、 客户端无法远程连接Redis的解决方法

	cd	/usr/local/redis
	#进入redis配置文件	进行编辑 
	vi redis.conf

如下

1、bind 127.0.0.1改为 bind 0.0.0.0

	127.0.0.1: 代表本地地址,访问redis服务只能通过本机的客户端连接,而无法通过远程连接
	0.0.0.0: 接受所有来自于可用网络接口的连接
	
2、protected-mode yes 改为 protected-mode no

	yes: 保护模式,只允许本地链接
	no: 保护模式关闭
	
3、daemonize no: 当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(xshell等)都会导致redis进程退出

注意: 启动redis 一定要指定配置文件,否则配置文件不生效的

		./src/redis-server redis.conf

2、redis的启停及操作

	#查看redis状态
	ps -aux | grep redis
	
	1、命令启动redis服务
		在  /usr/local/redis 目录下执行
	
		./bin/redis-server redis.conf
		
	2、执行redis命令
	
		./bin/redis-cli
	
		认证
		auth password  #123456
		
	3、关闭redis服务
		shutdown
		
	4、操作
		存一个key
		set key value
		取一个key
		get key
	
	5、redis 密码
		
		#设置密码
		config set requirepass 123456
		
		#查看密码
		config get requirepass
		
	6、查询所有key
		keys *

	退出客户端
		ctrl + c
	
	5、下面是red hat/CentOs7关闭防火墙的命令!

		1:查看防火状态
			systemctl status firewalld

		2:暂时关闭防火墙
			systemctl stop firewalld

		3:永久关闭防火墙
			systemctl disable firewalld

		4:重启防火墙
			systemctl enable firewalld




6

		#查看密码
		config get requirepass
		
	6、查询所有key
		keys *

	退出客户端
		ctrl + c
	
	5、下面是red hat/CentOs7关闭防火墙的命令!

		1:查看防火状态
			systemctl status firewalld

		2:暂时关闭防火墙
			systemctl stop firewalld

		3:永久关闭防火墙
			systemctl disable firewalld

		4:重启防火墙
			systemctl enable firewalld




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值