Docker安装redis,整合springboot工程详细教程
引言
虽然docker安装redis非常简单,但是对于新手总会遇到一些棘手的问题卡住,然后花费大量的时间去查找资料,非常消磨一个程序员的意志,在此,本人这篇博客手把手教你怎么用docker安装redis并整合springboot工程,详细分析一下新手在此过程中可能出现的问题。
一、安装redis
1.首先我们准备一台已经安装了docker的虚拟机
2.接着我们拉去最新的redis,我这里拉去的redis8,但是发现报错了
3.这时我们只需修改一下docker的配置文件即可
vim /etc/docker/daemon.json
4.将如下内容写入docker的镜像加速器
{
"registry-mirrors": [
"https://docker.1panelproxy.com",
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
5.重新加载配置文件及docker服务
systemctl daemon-reload
6.重启docker
systemctl restart docker
7.重新拉取docker镜像
这时就能拉下来最新的redis了
8.挂载配置文件
宿主机redis.cof 文件位置 : /data/redis/conf/redis.cof
mkdir -p /data/redis/conf
cd /data/redis/conf
vi redis.conf
将第11.配置文件内容 进行复制
宿主机redis-data位置 : /data/redis/data
mkdir -p /data/redis/data
9. 启动redis 容器
启动最新版redis
docker run -itd --name redis --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 -v /data/redis/conf/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass qwe123
9.1参数解析
【 --restart=always】 开机启动,失败也会一直重启;
【–log-opt max-size=100m】意味着一个容器日志大小上限是100M;
【–log-opt max-file=2】意味着一个容器有2个日志,分别是id+.json、id+1.json;
【-p 6379:6379】 将宿主机6379端口与容器内6379端口进行映射;
【-v】 将宿主机目录或文件与容器内目录或文件进行挂载映射;
【-itd】
i:以交互模式运行容器,通常与 -t 同时使用;
t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
d:表示后台启动redis;
【–name】 给容器命名;
【–appendonly yes】 开启redis 持久化;
【–requirepass qwe123】 强烈建议设置密码,并且将密码设置为高强度复杂;
【redis-server /etc/redis/redis.conf】 以配置文件启动redis,加载容器内的conf文件;
9.2 启动特定版本redis
docker run --name redis \
-p 6379:6379 \
-v /docker/redis/redis.conf:/usr/local/etc/redis/redis.conf \
-v /docker/redis/data:/data \
--restart always \
-d redis:7.4.3 \
redis-server /usr/local/etc/redis/redis.conf
9.3 给正在运行的redis设置密码(选填)
如果容器正在运行,你想给redis设置密码,按照如下步骤实现:
9.3.1 进入容器
docker exec -it redis /bin/bash
9.3.2 连接redis
redis-cli
9.3.3 设置密码
CONFIG SET requirepass "12345"
如图
现在退出再登录的话就需要密码:
auth 12345
要让容器生效则重启redis容器:
docker restart redis
10.测试redis
10.1查看启动状态
docker ps -a | grep redis
10.2查看容器日志
docker logs -f redis
10.3查看redis命令是否正常
docker exec -it redis redis-cli
11.配置文件
redis.conf配置文件
protected-mode no
port 6379
tcp-backlog 511
#redis密码 强烈建议设置复杂一些
requirepass qwe123
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
12 测试远程链接
使用RDM-GUI测试链接
二、springboot集成redis
1.引入依赖
在springboot工程pom.xml文件中引入redis依赖
<!-- redis的起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.配置Redis连接信息
在application.yml文件中配置Redis连接信息,包括主机、端口、密码等。
注意:如果没有设置密码,则不需要在此配置密码!
data:
redis:
host: 192.168.x.x
port: 6379
password: xxxxx
3.创建Redis配置类
创建一个配置类,用于配置Redis连接工厂和其他相关配置。可以使用RedisStandaloneConfiguration或RedisSentinelConfiguration等来配置连接工厂。
package com.nd.it.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
@Configuration
public class RedisConfig {
@Value("${spring.data.redis.host}")
private String host;
@Value("${spring.data.redis.port}")
private int port;
@Value("${spring.data.redis.password}")
private String password;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
config.setHostName(host);
config.setPort(port);
config.setPassword(password); // 如果有密码的话
return new LettuceConnectionFactory(config);
}
}
4.使用RedisTemplate来测试一下
controller类
vo类
通过knife4j传值
我的redis中存入的key和value
返回成功,表示一切符合预期!