一、Docker拉取镜像最新版 Redis version=8.6.2
docker pull redis

结果:

二、Docker挂载配置文件

接下来就是要将redis 的配置文件进行挂载,以配置文件方式启动redis 容器。(挂载:即将宿主的文件和容器内部目录相关联,相互绑定,在宿主机内修改文件的话也随之修改容器内部文件)

1)、挂载redis的配置文件

2)、挂载redis 的持久化文件(为了数据的持久化)。

本人的配置文件是放在

liunx 下redis.conf文件位置: /home/redis/myredis/redis.conf

liunx 下redis的data文件位置 : /home/redis/myredis/data

位置可以自己随便选择哈

执行命令,创建文件夹,不存在就直接创建/home/redis/myredis 文件夹

mkdir -p /home/redis/myredis
mkdir /home/redis/myredis/data

myredis.conf 文件是我手动上传的。 (redis.conf的标准文件在redis官网也可以找到)

# myredis.conf
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
# bind 127.0.0.1

# include /path/to/other.conf
# 我们知道Redis只有一个配置文件,如果多个人进行开发维护,那么就需要多个这样的配置文件,这时候多个配置文件就可以在此通过 include /path/to/local.conf 配置进来,而原本的 redis.conf 配置文件就作为一个总闸。
# 如果将此配置写在redis.conf 文件的开头,那么后面的配置会覆盖引入文件的配置,如果想以引入文件的配置为主,那么需要将 include 配置写在 redis.conf 文件的末尾。


#  NETWORK

protected-mode no

# Redis 服务器的端口号(默认:6379)
port 6379

# 绑定的 IP 地址,如果设置为 127.0.0.1,则只能本地访问;若设置为 0.0.0.0,则监听所有接口(默认:127.0.0.1)
bind 0.0.0.0

# 在高并发环境下需要一个高backlog值来避免慢客户端连接问题。注意Linux内核默默将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog 两个值来达到需要的效果。
tcp-backlog 511

# 设置在客户端闲置一段时间后关闭连接,单位为秒(默认:0,表示禁用)
timeout 0

# 单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是300s,如果设置为0,则不会周期性的检测。
tcp-keepalive 300




#  GENERAL
# 是否以守护进程(daemon)模式运行,默认为 "no",设置为 "yes" 后 Redis 会在后台运行
# 设置为yes表示指定Redis以守护进程的方式启动(后台启动)。默认值为 no
daemonize no

# 是否通过upstart或systemd管理守护进程。默认no没有服务监控,其它选项有upstart, systemd, auto
supervised no

# 配置PID文件路径,当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/redis/run/redis_6379.pid 文件里面
pidfile /var/run/redis_6379.pid

# 设置日志级别(默认:notice)。可以是 debug、verbose、notice、warning
loglevel notice

# 配置log文件地址,默认打印在命令行终端的窗口上
logfile ""


# 是否启动系统日志记录。
# syslog-enabled no
 
# 指定系统日志身份。
# syslog-ident redis
 
# 指定syslog设备。必须是user或LOCAL0 ~ LOCAL7之一。

# 设置数据库数量(默认:16),Redis 使用数据库索引从 0 到 15
# 设置数据库的数目。默认的数据库是DB 0 ,可以在每个连接上使用select  <dbid> 命令选择一个不同的数据库,dbid是一个介于0到databases – 1 之间的数值。默认值是 16,也就是说默认Redis有16个数据库。
databases 16

# redis启动时是否显示Logo
always-show-logo yes




#  SNAPSHOTTING
# 当然如果你只是用Redis的缓存功能,不需要持久化,那么你可以注释掉所有的 save 行来停用保存功能。可以直接一个空字符串来实现停用:save “”
# 表示900 秒内如果至少有 1 个 key 的值变化,则保存
# 表示300 秒内如果至少有 10 个 key 的值变化,则保存
# 表示60 秒内如果至少有 10000 个 key 的值变化,则保存
save 900 1
save 300 10
save 60 10000

# 默认值为yes。当启用了RDB且最后一次后台保存数据失败,Redis是否停止接收数据。
# 这会让用户意识到数据没有正确持久化到磁盘上,
# 否则没有人会注意到灾难(disaster)发生了。如果Redis重启了,那么又可以重新开始接收数据了
stop-writes-on-bgsave-error yes

# 默认值是yes。对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,
# redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,但是存储在磁盘上的快照会比较大。
rdbcompression yes

# 默认值是yes。在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,
# 如果希望获取到最大的性能提升,可以关闭此功能。
rdbchecksum yes

# 设置 RDB 持久化文件的名称(默认:dump.rdb)
dbfilename dump.rdb

# 设置 RDB 持久化文件的保存路径,默认保存在当前目录
dir ./




# REPLICATION
######################### 主从同步 #########################
# 主从同步配置。
# 1) redis主从同步是异步的,但是可以配置在没有指定slave连接的情况下使master停止写入数据。
# 2) 连接中断一定时间内,slave可以执行部分数据重新同步。
# 3) 同步是自动的,slave可以自动重连且同步数据。
# replicaof <masterip> <masterport>

# master连接密码
# masterauth <master-password>
# 默认值为yes。当一个 slave 与 master 失去联系,或者复制正在进行的时候,slave 可能会有两种表现:
# 1) 如果为 yes ,slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候 
# 2) 如果为 no ,在你执行除了 info he salveof 之外的其他命令时,slave 都将返回一个 “SYNC with master in progress” 的错误
replica-serve-stale-data yes

# 你可以配置salve实例是否接受写操作。可写的slave实例可能对存储临时数据比较有用(因为写入salve# 的数据在同master同步之后将很容被删除),但是如果客户端由于配置错误在写入时也可能产生一些问题。
# 从Redis2.6默认所有的slave为只读
# 注意:只读的slave不是为了暴露给互联网上不可信的客户端而设计的。它只是一个防止实例误用的保护层。
# 一个只读的slave支持所有的管理命令比如config,debug等。为了限制你可以用'rename-command'来隐藏所有的管理和危险命令来增强只读slave的安全性。
replica-read-only yes

# 同步策略: 磁盘或socket,默认磁盘方式
repl-diskless-sync no

# 如果非磁盘同步方式开启,可以配置同步延迟时间,以等待master产生子进程通过socket传输RDB数据给slave。
# 默认值为5秒,设置为0秒则每次传输无延迟。
# repl-diskless-sync-delay 5

# slave根据指定的时间间隔向master发送ping请求。默认10秒。
# repl-ping-replica-period 10
 
# 同步的超时时间
# 1)slave在与master SYNC期间有大量数据传输,造成超时
# 2)在slave角度,master超时,包括数据、ping等
# 3)在master角度,slave超时,当master发送REPLCONF ACK pings# 确保这个值大于指定的repl-ping-slave-period,否则在主从间流量不高时每次都会检测到超时
# repl-timeout 60

# 是否在slave套接字发送SYNC之后禁用 TCP_NODELAY
# 如果选择yes,Redis将使用更少的TCP包和带宽来向slaves发送数据。但是这将使数据传输到slave上有延迟,Linux内核的默认配置会达到40毫秒。
# 如果选择no,数据传输到salve的延迟将会减少但要使用更多的带宽。
# 默认我们会为低延迟做优化,但高流量情况或主从之间的跳数过多时,可以设置为“yes”。
repl-disable-tcp-nodelay no

replica-priority 100

# 设置数据备份的backlog大小。backlog是一个slave在一段时间内断开连接时记录salve数据的缓冲,所以一个slave在重新连接时,不必要全量的同步,而是一个增量同步就足够了,将在断开连接的这段# 时间内把slave丢失的部分数据传送给它。
# 同步的backlog越大,slave能够进行增量同步并且允许断开连接的时间就越长。
# backlog只分配一次并且至少需要一个slave连接。
# repl-backlog-size 1mb
 
# 当master在一段时间内不再与任何slave连接,backlog将会释放。以下选项配置了从最后一个
# slave断开开始计时多少秒后,backlog缓冲将会释放。
# 0表示永不释放backlog
# repl-backlog-ttl 3600

# slave的优先级是一个整数展示在Redis的Info输出中。如果master不再正常工作了,sentinel将用它来选择一个slave提升为master。
# 优先级数字小的salve会优先考虑提升为master,所以例如有三个slave优先级分别为10,100,25,sentinel将挑选优先级最小数字为10的slave。
# 0作为一个特殊的优先级,标识这个slave不能作为master,所以一个优先级为0的slave永远不会被# sentinel挑选提升为master。
# 默认优先级为100
# slave-priority 100
 
# 如果master少于N个延时小于等于M秒的已连接slave,就可以停止接收写操作。
# N个slave需要是“oneline”状态。
# 延时是以秒为单位,并且必须小于等于指定值,是从最后一个从slave接收到的ping(通常每秒发送)开始计数。
# 该选项不保证N个slave正确同步写操作,但是限制数据丢失的窗口期。
# 例如至少需要3个延时小于等于10秒的slave用下面的指令:
# min-replicas-to-write 3
# min-replicas-max-lag 10
 
# 两者之一设置为0将禁用这个功能。
# 默认 min-replicas-to-write 值是0(该功能禁用)并且 min-replicas-max-lag 值是10。




######################### 安全 #########################


# 设置密码,客户端连接时需要提供密码才能进行操作,如果不设置密码,可以注释掉此行(默认:无)
# 要求客户端在处理任何命令时都要验证身份和密码。
# requirepass 12345678

# 设置每秒最大处理的写入命令数量,用于保护 Redis 服务器不被超负荷写入(默认:0,表示不限制)
# maxclients 10000

# 指定 Redis 可以使用的最大内存量。当 Redis 达到此限制时,它将根据 maxmemory-policy 开始逐出 key。
# maxmemory <bytes>

# 设置最大使用内存的策略(默认:noeviction)。可以是 volatile-lru、allkeys-lru、volatile-random、allkeys-random、volatile-ttl 或 noeviction
# maxmemory-policy noeviction

# 设置允许最大使用内存的比例(默认:0),设置为 0 表示禁用
# maxmemory-samples 5


######################### APPEND ONLY MODE #########################

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

# 默认情况下,Redis是异步的把数据导出到磁盘上。这种模式在很多应用里已经足够好,但Redis进程出问题或断电时可能造成一段时间的写操作丢失(这取决于配置的save指令)。
# AOF是一种提供了更可靠的替代持久化模式,例如使用默认的数据写入文件策略(参见后面的配置)。
# 在遇到像服务器断电或单写情况下Redis自身进程出问题但操作系统仍正常运行等突发事件时,Redis能只丢失1秒的写操作。
# AOF和RDB持久化能同时启动并且不会有问题。
# 如果AOF开启,那么在启动时Redis将加载AOF文件,它更能保证数据的可靠性。
# yes no
appendonly yes

# AOF文件名(默认:"appendonly.aof")
appendfilename "appendonly.aof"

# fsync() 系统调用告诉操作系统把数据写到磁盘上,而不是等更多的数据进入输出缓冲区。
# 有些操作系统会真的把数据马上刷到磁盘上;有些则会尽快去尝试这么做。
# Redis支持三种不同的模式:
# no:不要立刻刷,只有在操作系统需要刷的时候再刷。比较快。
# always:每次写操作都立刻写入到aof文件。慢,但是最安全。
# everysec:每秒写一次。折中方案。
# 默认的 "everysec" 通常来说能在速度和数据安全性之间取得比较好的平衡。
# appendfsync always
# appendfsync everysec
# appendfsync no
 
# 如果AOF的同步策略设置成 "always" 或者 "everysec",并且后台的存储进程(后台存储或写入AOF 日志)会产生很多磁盘I/O开销。某些Linux的配置下会使Redis因为 fsync()系统调用而阻塞很久。
# 注意,目前对这个情况还没有完美修正,甚至不同线程的 fsync() 会阻塞我们同步的write(2)调用。
# 为了缓解这个问题,可以用下面这个选项。它可以在 BGSAVE 或 BGREWRITEAOF 处理时阻止fsync()。
# 这就意味着如果有子进程在进行保存操作,那么Redis就处于"不可同步"的状态。
# 这实际上是说,在最差的情况下可能会丢掉30秒钟的日志数据。(默认Linux设定)
# 如果把这个设置成"yes"带来了延迟问题,就保持"no",这是保存持久数据的最安全的方式。
no-appendfsync-on-rewrite no

# 自动重写AOF文件。如果AOF日志文件增大到指定百分比,Redis能够通过 BGREWRITEAOF 自动重写AOF日志文件。# 工作原理:Redis记住上次重写时AOF文件的大小(如果重启后还没有写操作,就直接用启动时的AOF大小)
# 这个基准大小和当前大小做比较。如果当前大小超过指定比例,就会触发重写操作。你还需要指定被重写日志的最小尺寸,这样避免了达到指定百分比但尺寸仍然很小的情况还要重写。
# 指定百分比为0会禁用AOF自动重写特性。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 如果设置为yes,如果一个因异常被截断的AOF文件被redis启动时加载进内存,redis将会发送日志通知用户。如果设置为no,erdis将会拒绝启动。此时需要用"redis-check-aof"工具修复文件。
aof-load-truncated yes

# [RDB file][AOF tail]
# 加载时Redis识别出AOF文件以“REDIS”开头字符串,
# 并加载带此前缀的RDB文件,然后继续加载AOF
# 尾巴。
aof-use-rdb-preamble yes

######################### LUA脚本 #########################
 
# Lua 脚本的最大执行时间,毫秒为单位
lua-time-limit 5000


######################### 集群 #########################

# 设置是否开启集群模式(cluster mode),默认为 "no"
# cluster-enabled no

# 配置redis自动生成的集群配置文件名。确保同一系统中运行的各redis实例该配置文件不要重名。
# cluster-config-file nodes-6379.conf

# 设置集群中的节点超时时间(默认:15000毫秒)
# cluster-node-timeout 15000

# 如果数据太旧,集群中的不可用master的slave节点会避免成为备用master。如果slave和master失联时间超过:(node-timeout * slave-validity-factor) + repl-ping-slave-period则不会被提升为master。
# 如node-timeout为30秒,slave-validity-factor为10, 默认default repl-ping-slave-period为10秒,失联时间超过310秒slave就不会成为master。
# 较大的slave-validity-factor值可能允许包含过旧数据的slave成为master,同时较小的值可能会阻止集群选举出新master。
# 为了达到最大限度的高可用性,可以设置为0,即slave不管和master失联多久都可以提升为master
# cluster-replica-validity-factor 10


# 只有在之前master有其它指定数量的工作状态下的slave节点时,slave节点才能提升为master。默认为1(即该集群至少有3个节点,1 master+2 slaves,master宕机,仍有另外1个slave的情况下其中1个slave可以提升)
# 测试环境可设置为0,生成环境中至少设置为1
# cluster-migration-barrier 1
 
# 默认情况下如果redis集群如果检测到至少有1个hash slot不可用,集群将停止查询数据。
# 如果所有slot恢复则集群自动恢复。
# 如果需要集群部分可用情况下仍可提供查询服务,设置为no。
# cluster-require-full-coverage yes
 
# 选项设置为yes时,会阻止replicas尝试对其master在主故障期间进行故障转移
# 然而,master仍然可以执行手动故障转移,如果强制这样做的话。
# cluster-replica-no-failover no


# 设置集群中节点间通信使用的 IP 地址
# cluster-announce-ip 10.1.1.5
# 设置集群中节点间通信使用的端口号(默认:0)
# cluster-announce-port 6379
# cluster-announce-bus-port 6380



######################### 慢查询日志 #########################


# 慢查询日志,记录超过多少微秒的查询命令。查询的执行时间不包括客户端的IO执行和网络通信时间,只是查询命令执行时间。
# 1000000等于1秒,设置为0则记录所有命令
slowlog-log-slower-than 10000
 
# 记录大小,可通过SLOWLOG RESET命令重置
slowlog-max-len 128




######################### LATENCY MONITOR #########################
# redis延时监控系统在运行时会采样一些操作,以便收集可能导致延时的数据根源。
# 通过 LATENCY命令 可以打印一些图样和获取一些报告,方便监控
# 这个系统仅仅记录那个执行时间大于或等于预定时间(毫秒)的操作,
# 这个预定时间是通过latency-monitor-threshold配置来指定的,
# 当设置为0时,这个监控系统处于停止状态
# latency-monitor-threshold 0




######################### 事件通知 #########################
# K 	键空间通知,所有通知以 __keyspace@<db>__ 为前缀
# E 	键事件通知,所有通知以 __keyevent@<db>__ 为前缀
# g 	DEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知
# $ 	字符串命令的通知
# l 	列表命令的通知
# s 	集合命令的通知
# h 	哈希命令的通知
# z 	有序集合命令的通知
# x 	过期事件:每当有过期键被删除时发送
# e 	驱逐(evict)事件:每当有键因为 maxmemory 政策而被删除时发送
# A 	参数 g$lshzxe 的别名
#  Example: to enable list and generic events, from the point of view of the
#           event name, use:
#
#  notify-keyspace-events Elg
#
#  Example 2: to get the stream of the expired keys subscribing to channel
#             name __keyevent@0__:expired use:
#
#  notify-keyspace-events Ex
# Redis能通知 Pub/Sub 客户端关于键空间发生的事件,默认关闭
notify-keyspace-events ""





############################### ADVANCED CONFIG ###############################
 
# 当hash只有少量的entry时,并且最大的entry所占空间没有超过指定的限制时,会用一种节省内存的
# 数据结构来编码。可以通过下面的指令来设定限制
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

# 当取正值的时候,表示按照数据项个数来限定每个quicklist节点上的ziplist长度。比如,当这个参数配置
# 成5的时候,表示每个quicklist节点的ziplist最多包含5个数据项。
# 当取负值的时候,表示按照占用字节数来限定每个quicklist节点上的ziplist长度。这时,它只能取-1到-5
# 这五个值,每个值含义如下:
#    -5: 每个quicklist节点上的ziplist大小不能超过64 Kb。(注:1kb => 1024 bytes)
#    -4: 每个quicklist节点上的ziplist大小不能超过32 Kb。
#    -3: 每个quicklist节点上的ziplist大小不能超过16 Kb。
#    -2: 每个quicklist节点上的ziplist大小不能超过8 Kb。(-2是Redis给出的默认值)
#    -1: 每个quicklist节点上的ziplist大小不能超过4 Kb。
list-max-ziplist-size -2
 
# 这个参数表示一个quicklist两端不被压缩的节点个数。
# 注:这里的节点个数是指quicklist双向链表的节点个数,而不是指ziplist里面的数据项个数。
# 实际上,一个quicklist节点上的ziplist,如果被压缩,就是整体被压缩的。
# 参数list-compress-depth的取值含义如下:
#    0: 是个特殊值,表示都不压缩。这是Redis的默认值。
#    1: 表示quicklist两端各有1个节点不压缩,中间的节点压缩。
#    2: 表示quicklist两端各有2个节点不压缩,中间的节点压缩。
#    3: 表示quicklist两端各有3个节点不压缩,中间的节点压缩。
#    依此类推…
# 由于0是个特殊值,很容易看出quicklist的头节点和尾节点总是不被压缩的,以便于在表的两端进行快速存取。
list-compress-depth 0
 
 
# set有一种特殊编码的情况:当set数据全是十进制64位有符号整型数字构成的字符串时。
# 下面这个配置项就是用来设置set使用这种编码来节省内存的最大长度。
set-max-intset-entries 512
 
# 与hash和list相似,有序集合也可以用一种特别的编码方式来节省大量空间。
# 这种编码只适合长度和元素都小于下面限制的有序集合
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
 
# HyperLogLog稀疏结构表示字节的限制。该限制包括
# 16个字节的头。当HyperLogLog使用稀疏结构表示
# 这些限制,它会被转换成密度表示。
# 值大于16000是完全没用的,因为在该点
# 密集的表示是更多的内存效率。
# 建议值是3000左右,以便具有的内存好处, 减少内存的消耗
hll-sparse-max-bytes 3000
 
# Streams宏节点最大大小/项目。 流数据结构是基数编码内部多个项目的大节点树。 使用此配置
# 可以配置单个节点的字节数,以及切换到新节点之前可能包含的最大项目数
# 追加新的流条目。 如果以下任何设置设置为0,忽略限制,因此例如可以设置一个
# 大入口限制将max-bytes设置为0,将max-entries设置为所需的值
stream-node-max-bytes 4096
stream-node-max-entries 100
 
# 启用哈希刷新,每100个CPU毫秒会拿出1个毫秒来刷新Redis的主哈希表(顶级键值映射表)
activerehashing yes
 
# 客户端的输出缓冲区的限制,可用于强制断开那些因为某种原因从服务器读取数据的速度不够快的客户端
# client-output-buffer-limit normal 0 0 0
# client-output-buffer-limit slave 256mb 64mb 60
# client-output-buffer-limit pubsub 32mb 8mb 60
 
# 客户端查询缓冲区累积新命令。 它们仅限于固定的默认情况下,
# 多数情况下为了避免协议不同步导致客户端查询缓冲区中未绑定的内存使用量的错误
# 但是,如果你有使用的话,你可以在这里配置它,比如我们有很多执行请求或类似的。
# client-query-buffer-limit 1gb
 
# 在Redis协议中,批量请求,即表示单个的元素strings,通常限制为512 MB。
# 但是,您可以z更改此限制
# proto-max-bulk-len 512mb
 
# 默认情况下,“hz”的被设定为10。提高该值将在Redis空闲时使用更多的CPU时,但同时当有多个key
# 同时到期会使Redis的反应更灵敏,以及超时可以更精确地处理
hz 10
 
# Normally it is useful to have an HZ value which is proportional to the
# number of clients connected. This is useful in order, for instance, to
# avoid too many clients are processed for each background task invocation
# in order to avoid latency spikes.
#
# Since the default HZ value by default is conservatively set to 10, Redis
# offers, and enables by default, the ability to use an adaptive HZ value
# which will temporary raise when there are many connected clients.
#
# When dynamic HZ is enabled, the actual configured HZ will be used as
# as a baseline, but multiples of the configured HZ value will be actually
# used as needed once more clients are connected. In this way an idle
# instance will use very little CPU time while a busy instance will be
# more responsive.
dynamic-hz yes
 
# 当一个子进程重写AOF文件时,如果启用下面的选项,则文件每生成32M数据会被同步
aof-rewrite-incremental-fsync yes
 
 
# 当redis保存RDB文件时,如果启用了以下选项,每生成32 MB数据,文件将被fsync-ed。 
# 这很有用,以便以递增方式将文件提交到磁盘并避免大延迟峰值。
rdb-save-incremental-fsync yes
三、启动redis 容器
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass 12345678
  1. –restart=always 总是开机启动
  2. –log是日志方面的
  3. -p 6379:6379 将6379端口挂载出去  冒号前面是主机的端口
  4. –name 给这个容器取一个名字
  5. -v 数据卷挂载 冒号前面是主机的一个物理目录路径
    • /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
    • /home/redis/myredis/data:/data 这个同上
  6. -d redis 表示后台启动redis
  7. redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
  8. –appendonly yes 开启redis 持久化
  9. –requirepass 000415 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置)

执行后的内容:

四、测试
1、通过docker ps指令查看启动状态

2、查看容器运行日志
docker logs --since 30m myredis
3、容器内部连接进行测试

命令:docker exec -it <容器名> /bin/bash

此处跟着的redis-cli是直接将命令输在上面了。

# 进入容器内部
docker exec -it myredis redis-cli
 
# 测试连接
ping
# 应该返回 PONG
 
# 测试设置键值
set test_key "Hello Redis"
get test_key
五、Docker删除Redis

查看所有在运行的容器:

命令: docker ps -a

停止运行的Redis

停止命令:docker stop <容器名>

docker stop myredis # myredis 是我启动redis 命名的别

删除redis 容器:

删除容器命令: docker rm <容器名>

docker rm myredis

删除容器后,我们开始删除redis镜像。

查看全部镜像 命令: docker images

删除镜像 命令 docker rmi <容器 id>

docker rmi 009cc37796fb # 这是我镜像redis id

六、使用 Docker Compose 部署 Redis

在开始之前,请确保你已经安装了 Docker 和 Docker Compose。

Docker 安装完成时,一般会自动创建三个网络,查看命令:

docker network ls

需要新建一个网络mydocker-net,下面的配置文件需要使用

docker network create mydocker-net

常用的网络命令:

 1、创建网络 test-network
 docker network create test-network
 

 2、将php容器或其他容器加入到test-network网络
 docker network connect test-network php
 

 3、 查看网络
 docker network ls
 

 4、 断开和移除网络
 移除网络之前需要断开所有连接到网络的容器:docker network disconnet test-network php
 移除网络:docker network rm test-network

第一步:创建 Docker Compose 文件

/home/redis/docker-compose.yml

# 配置文件启动
# version: '3' 使用 Docker Compose 的版本,高版本不用写
services:
  redis:
    image: redis:latest
    container_name: myredis
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - /home/redis/myredis/data:/data
      - /home/redis/myredis/myredis.conf:/etc/redis/redis.conf
      - /home/redis/myredis/logs:/logs
    command: redis-server /etc/redis/redis.conf --log-opt max-size=100m --log-opt max-file=2 --appendonly yes
    networks:
      - mydocker-net  # 加入统一网络

# 网络定义(所有服务在同一网络,可通过容器名互通)
networks:
  mydocker-net:
    driver: bridge
    external: true
第二步:运行 Docker Compose

保存好 docker-compose.yml 文件后,打开终端或命令行,进入到存放该文件的目录,并执行以下命令:

docker-compose up -d

显示如下内容

使用下面的方式进行测试

# 进入容器内部
docker exec -it myredis redis-cli
 
# 测试连接
ping
# 应该返回 PONG
 
# 测试设置键值
set test_key "Hello Redis"
get test_key

成功安装。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐