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