Docker中配置安装Redis

本文档详细记录了如何在Docker中安装并配置Redis,包括拉取镜像、修改配置文件、创建并运行容器,以及开启数据持久化。通过端口映射和目录挂载,实现了Redis容器与宿主机之间的交互,便于管理和更新配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间:2022-04-13

作者:tuziailuobo

简介:在docker中安装配置redis记录。

Docker中安装Redis并挂载

1、拉取镜像

docker pull redis # 我用的最新的redis,如果需要使用某版本redis,使用命令: docker pull redis:tag

2、配置本地环境

mkdir /home/redis/{conf,data}

# 然后从下面地址拷贝redis.conf
# 上传至 /docker/redis/conf 目录
# http://download.redis.io/redis-stable/redis.conf

3、 修改redis.conf文件

protected-mode no # 默认为yes 开启保护模式

# 将bind 127.0.0.1注释掉 或改为0.0.0.0
bind 0.0.0.0

daemonize no # 允许外部访问 关闭守护进程方式启动,改为 yes 使用外部配置文件会启动失败

requirepass password # 设置密码(推荐,非必须)

2、 创建容器并运行

docker run -d \
--privileged=true \
-p 6379:6379 \
--restart always \
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/redis/data:/data \
--name redis02 redis redis-server /etc/redis/redis.conf \
--appendonly yes

说明

–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-d:后台启动
-p 6379:6389:将宿主机的6379端口和容器的6389端口进行映射关联,外界可以通过访问宿主机的6379访问到容器的6389端口,这里由于我配置了redis的启动端口为6389所以这里容器需要通过6389才能找到redis;
-v /home/redis/conf:/etc/redis/conf:映射规则宿主机目录:容器目录,这里挂载的是整个文件夹目录不是配置文件,千万别弄错了,我们这里就是把我们存放配置文件的目录和容器中我们准备存放配置文件的目录进行了一个挂载映射,这样我们修改外置配置文件并且重新启动容器以后就会挂载外面的配置文件了,注意:外置目录最好事先准备好
-v /home/redis/data:/etc/redis/data:这个就和上面一样了
–name myredis:给容器起个名字[唯一]
redis: 指定镜像名称
redis-server /etc/redis/conf/redis.conf:指定使用哪个配置文件启动redis容器,注意这里填写的是你挂载进去以后,配置文件所在的容器内部位置
–appendonly yes:开启数据持久化

3、测试远程连接

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.3.0</version>
</dependency>
public static void main(String[] args) {
    // new jedis object
    Jedis jedis = new Jedis("your ip", 6379);
    jedis.auth("123456");
    System.out.println(jedis.ping());
}

输出:PONG表示远程连接成功。

4、扩展:配置详解

bind 127.0.0.1
#绑定的ip
protected-mode yes
#保护模式
port 6379
#端口
#这些配置之后可能会经常使用

daemonize yes # 默认是no,需要手动设置为yes
#以守护线程的方式运行

pidfile /var/run/redis_6379.pid # 如果以后台的方式运行,我们就需要指定一个pid文件

#日志
debug、verbose、notice、warning
#设置日志等级
loglevel notice

logfile
#设置日志文件位置

database 16
#16个数据库

always-show-logo yes 
#永远显示logo

# 持久化的时候会用到
snapshotting#快照
	三个方法,在规定时间内,执行了多少次操作,则会持久化到文件  .rdb  .aof
	redis是内存数据库,没有持久化,数据就会丢失
	# 如果900s内,如果至少有一个1 key进行了修改,我们及进行持久化操作
    save 900 1
    # 如果300s内,如果至少10 key进行了修改,我们及进行持久化操作
    save 300 10
    # 如果60s内,如果至少10000 key进行了修改,我们及进行持久化操作
    save 60 10000

	stop-writes-on-bgseve-error yes
	#持久化错误之后是否要继续工作,默认开启
	
	rdbcompression yes
	#是否压缩rdb文件,需要消耗cpu资源
	
	rdbchecksum yes
	#保存rdb文件是否要进行错误检查校验
	
	dir 	./
	#rdb文件保存的目录
	
replication #主从复制,需要搭建多个redis


Security #安全设置
requirepass foobared
#默认没有密码
#通过命令config set requirepass 可以设置密码
#auth password   进行登录

########################################################################
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass 123
OK
127.0.0.1:6379> ping 
PONG
127.0.0.1:6379> quit
haoyun@HAOYUN ~ % redis-cli         #设置密码操作
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 
########################################################################


maxlients 10000 
#设置能连接上redis的最大客户端数量
maxmemory <bytes>
#redis配置最大的内存数
maxmemory-policy noeviction
#内存到达上限之后的处理策略
		#移除一些过期的key
		#报错、、、
		#六种机制
		volatile-lru:设置了过期时间的key进行lru移除
		allkeys-lru:删除
		volatile-random:删除即将过期的key
		allkeys-random:随机删除
		volatile-ttl:删除即将过期的
		noeviction:永远不过期,直接报错
		


Append only模式  aof模式
#持久化的两种方式之一RDB、AOF
appendonly no
#默认是不开启的,默认使用RDB持久化,大部分情况下RDB完全够用

appendfilename "appendonly.aof"
#aof持计划文件名

appendfsync always 
#每次修改都会synch 消耗性能
appendfsync everysec 
#每秒执行一次 synch,可能会丢失那1s的数据
appendfsync no
#不执行sync 这时候操作系统自己同步数据,速度是最快的,一般也不用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值