一、Redis简介
二、简易版本启动(学习版)
1、一条命令直接搞定
2、docker ps 命令,查看本机docker运行的容器
3、docker logs 查看日志
4、测试连接
5、优缺点
三、生产版本启动
四、Docker 停止、删除、重启、启动容器
一、Redis简介
Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。
二、简易版本启动(学习版)
1、一条命令直接搞定
无需配置文件,所有的参数全部跟在docker 命令后,命令如下:
docker run --restart=always -p 6379:6379 --name myredis -d redis:6.2.1 --requirepass ningzaichun
启动效果:
备注:在宿主机没有镜像的情况,会自动在 Docker hub 的公开仓库中进行寻找和下载。
2、docker ps 命令,查看本机docker运行的容器
docker ps
docker ps -a # 查看全部的容器,包括已经停止的
3、docker logs 查看日志
docker logs [容器名 | 容器ID ]
docker logs -f [容器名 | 容器ID ] #表示实时的跟踪日志输出
docker logs --since 30m myredis # 此处 --since 30m 是查看此容器30分钟之内的日志情况。
4、测试连接
测试本地连接
docker exec -it [容器名 | 容器ID] bash # 以交互的方式进入容器内部,具体的我这里没解释啦
#最近准备了一篇文章专门来讲这个
redis-cli
set k1 v1
auth zhangsan #自己设置的密码
get k1
测试外部连接(可使用redis链接工具RDM)
备注:
1、如果你是云环境的话,记得要去开放安全端口,否则外部是无法连接的。
2、虚拟机环境的话,记得要去开放防火墙,或者直接关闭防火墙。
5、优缺点
优点:
1、适用于各位搭建测试环境,直接一条命令到位,不需要考虑这考虑那
2、适用于新手玩redis,只是想要学习Redis命令,完全可以应付前期的学习,给予自己一定的正向反馈,让自己坚持学下去。
缺点:
1、数据比较容易丢失,因为没有配置需要落入磁盘,所以全部都是在内存中,一旦关机或者容器挂掉,数据就没有啦。
2、没法修改配置文件,不好去自定义配置
三、生产版本启动
2.1将制定的文件上传到服务器上,并映射进Redis中持久化
################################ SNAPSHOTTING ################################
# 持久化保存策略配置
# 在900s内,如果至少有1个key进行了修改,就进行持久化操作
save 900 1
# 在300s内,如果至少有10个key进行了修改,就进行持久化操作
save 300 10
# 在60s内,如果至少有10000个key进行了修改,就进行持久化操作
save 60 10000
# 配置如果持久化出错,Redis是否禁止写入命令 yes:禁止写入命令,no:允许写入命令(存在数据丢失风险)
stop-writes-on-bgsave-error yes
# 配置是否压缩rdb文件。[开启(yes)的话,会消耗一定的cpu资源]
rdbcompression yes
# 保存rdb文件的时候,进行错误的检查校验
rdbchecksum yes
# 默认持久化保存后的文件名
dbfilename dump.rdb
# rdb文件保存的目录
dir ./
# 设置访问、登录的密码,设置requirepass 您的密码
requirepass 123456
############################## APPEND ONLY MODE ###############################
# 是否开启aof持久化模式,默认值:no,不开启。redis的默认持久化策略是edb模式
appendonly no
# 持久化文件名称
appendfilename "appendonly.aof"
# 持久化策略设置
# appendfsync always # 每次修改都进行持久化操作
appendfsync everysec # 每秒执行一次持久化操作
# appendfsync no # 不执行持久化操作,相当于未开启aof持久化策略
# 设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes
no-appendfsync-on-rewrite no
# AOF自动重写配置,默认值为100
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# Redis在以AOF方式恢复数据时,对最后一条可能出问题的指令的处理方式,默认值yes
aof-load-truncated yes
# 当重写AOF文件时,Redis能够在AOF文件中使用RDB前导码,以便更快地重写和恢复,启用此选项时,重写的AOF文件由两个不同的节组成:[RDB file][AOF tail],当加载AOF文件时,Redis通过以 “REDIS” 字符串开头的AOF文件识别出此文件是由RDB和AOF组合而成的,Redis会先加载RDB部分,然后再加载AOF部分,默认值yes
aof-use-rdb-preamble yes
################################### CLIENTS ####################################
# 设置客户端最大连接数,该配置一般无需修改,使用默认值即可
# maxclients 10000
############################## MEMORY MANAGEMENT ################################
# redis配置的最大内存容量
# maxmemory <bytes>
# 到达内存容量限制之后的处理策略
# maxmemory-policy noeviction
docker run --restart=always \
-p 6379:6379 \
--name myredis \
-v /home/dj/redis/redis.conf:/etc/redis/redis.conf \
-v /home/dj/redis/data:/data \
-d redis:7.0.12 redis-server /etc/redis/redis.conf
各参数的意义:
1)-restart=always 总是开机启动
2)-p 6379:6379 将6379端口挂载出去
3)–name 给这个容器取一个名字
4)-v 数据卷挂载 /home/dj/redis/redis.conf:/etc/redis/redis.conf此处是将宿主机 /home/dj/redis/redis.conf 文件映射到 redis 容器下的 /etc/redis/redis.conf,此处你也可以理解为docker容器和宿主机共享这个文件。
5)-d redis:7.0.12 后台运行容器,不加-d就是直接在控制台输出,关闭窗口即停止容器。
6) redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的 redis.conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是宿主机下共享的 /home/dj/redis/redis.conf。
补充:如果有权限相关的问题,可以给容器一个特权模式。加一个 --privileged
7)--log-opt max-size=100m --log-opt max-file=3
max-size:指定日志文件大小上限
max-file:指定日志文件个数
查看启动日志(是否正常启动)
docker logs myredis # 后面跟容器名 or 容器ID 都可以
docker logs --since 30m <容器名> # --since 30m 是查看此容器30分钟之内的日志情况。
四、Docker 停止、删除、重启、启动容器
docker stop [容器名|容器ID] #停止容器
docker start [容器名|容器ID] #启动停止的容器
docker restart [容器名|容器ID] # 将容器重新启动
docker kill [容器名|容器ID] #强行终止
docker rm [容器名|容器ID] # 删除停止的容器