No Data

docker安装redis镜像 redis.conf配置 Memory overcommit

原创  作者:斩雪碎光阴  发布于:2023年06月10日  阅读量:331
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
  分类:  标签:

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...

相关文章