1.redis拉取镜像:
docker pull redis:latest
2.redis运行容器:
docker run -itd --name redis01 -p 6379:6379 -v /root/redis01/conf/redis.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf
redis-server指定配置文件
由于redis镜像中没有配置文件redis.conf,因此需要先在外部创建配置文件运行容器时挂载,如果不挂在配置文件运行的容器中redis.conf会变成一个目录,仍会读取默认配置
3.其他redis命令
进入redis容器:
docker exec -it 4e1d0ce47131 /bin/bash
进入redis
redis-cli -p 6379
查看redis版本
redis-cli -v
redis-server -v
查看配置
config get *
退出redis
exit
4.redis.conf配置信息
redis.conf官方下载地址
https://redis.io/docs/management/config/
redis.conf码云下载地址
https://gitee.com/mirrors/redis
https://gitee.com/mirrors/redis/tree/7.0.11
https://gitee.com/mirrors/redis/blob/7.0.11/redis.conf
#不但要关闭protected-mode(保护模式)还要注释掉bind 127.0.0.1否则没有设置密码的情况下不能访问
#bind 127.0.0.1 -::1
#protected-mode(保护模式),那么在没有设定bind ip且没有设密码的情况下,也只接受本机的响应
protected-mode no
#端口号配置-Port redis默认端口6379就是在这里配置的。
port 6379
#超时关闭-timeout 它可以决定一个空闲的客户端维持多少秒会关闭,0表示关闭该功能。即永不关闭。 默认的配置也是0。
timeout 0
#配置是否为守护进程,默认值为no。 让redis成为守护进程,意味着redis可以后台运行,所以一般都会把它设置为yes。
daemonize no
#日志级别配置-loglevel
#指定日志记录级别,redis总共支持四个级别:
#debug:能设置的最高的日志级别,打印所有信息,包括debug信息。
#verbose:打印除了debug日志之外的所有日志。
#notice:打印除了debug和verbose级别的所有日志。
#warning:仅打印非常重要的信息。
#默认的日志级别为为notice。
#四个级别根据使用阶段来选择,生产环境选择notice 或者warning。
loglevel notice
# maxmemory
#redis最大内存配置-maxmemory
#建议最好设置,否则,将内存占满,会造成服务器宕机以及部分数据丢失。
#这是因为一旦到达内存使用上限,redis将会试图删除已到期或即将到期的Key。
#移除规则可以通过maxmemory-policy来指定。
#这里设置为10M
maxmemory 10485760
#达到最大内存时的移除策略-maxmemory-policy
#这里主要有八种策略可以选择:
#volatile-lru :使用LRU算法移除key,只对设置了过期时间的Key进行淘汰。(最近最少使用策略)
#allkeys-lru: 在所有集合key中,使用LRU算法移除key。
#volatile-lfu :使用LFU算法移除key,只对设置了过期时间的Key进行淘汰。。
#allkeys-lfu :在所有集合key中,使用LFU算法移除key。
#volatile-random :只对设置了过期时间的Key进行淘汰,淘汰算法为随机淘汰。
#allkeys-random: 在所有集合key中,移除随机的key。
#volatile-ttl: 移除那些TTL值最小的key,即那些最近要过期的key。
#noeviction: 永不删除key,针对写操作,达到最大内存再进行数据装入时会返回错误。
#redis使用的默认策略为noeviction。
maxmemory-policy volatile-ttl
5.其他docker命令
查看所有容器
docker ps -a
重启容器
docker restart 66eb740c6f65
停止容器
docker stop ce4b57a348c5
删除容器
docker rm -f 52221938c70f
退出容器
exit
6.查看容器日志
docker logs -f -t --tail 10 redis01
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
7.启用内存过度提交
在日中看到报警
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
暂时解决办法:
宿主执行,sysctl vm.overcommit_memory=1
永久解决办法:
vm.overcommit_memory=1
添加到宿主 "/etc/sysctl.conf" 文件中
8.redis 6379 被黑攻击
如果只是单机运行,但却在日志中看到大量主从同步失败错误,则代表正在被黑攻击
2023-06-25T04:30:01.099677352Z 1:S 25 Jun 2023 04:30:01.099 * MASTER <-> REPLICA sync started
2023-06-25T04:30:01.099687571Z 1:S 25 Jun 2023 04:30:01.099 * REPLICAOF 194.38.20.196:8886 enabled (user request from 'id=10 addr=109.237.96.251:37756 laddr=172.17.0.2:6379 fd=9 name= age=2 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=47 qbuf-free=20427 argv-mem=24 multi-mem=0 rbs=1024 rbp=146 obl=0 oll=0 omem=0 tot-mem=22320 events=r cmd=slaveof user=default redir=-1 resp=3')
2023-06-25T04:31:02.718686830Z 1:S 25 Jun 2023 04:31:02.718 # Timeout connecting to the MASTER...