这是我参与2022首次更文挑战的第23天,活动详情查看2022首次更文挑战
Redis是高性能读写,不支持命令审计,如果命令支持审计,性能会受到很大的影响,因此命令打印不出来。。阿里云 Redis 服务,通过内核改造提供全操作日志(modify)及高危命令的审计功能,性能开销通常低于 5%,为客户提供 7x24 基本无业务无损的审计服务,
redis log默认在conf中没有配置,是直接输出到/dev/null 中,如果需要输出到指定目录需要在 conf中增加logfile 字段
安装docker:
下载docker镜像:
docker pull redis
配置:
准备映射conf文件
mkdir -p ./redis/conf
vi ./redis/conf/redis.conf
#daemonize yes
dir /data
logfile /data/redis.log
protected-mode no
#bind 127.0.0.1
appendonly yes
loglevel verbose
Redis默认的设置为notice,开发测试阶段可以用debug(日志内容较多一般不建议使用),生产模式一般选用notice,但任何级别都不能记录操作
-
debug:会打印出很多信息,适用于开发和测试阶段
-
verbose(冗长的):包含很多不太有用的信息,但比debug要清爽一些
-
notice:适用于生产模式
-
warning : 警告信息
启动实例:
docker run -itd --net=host -p 6379:6379 -v ./redis/redis.conf:/usr/local/etc/redis/redis.conf -v ./redis/data/:/data --name redis_test -e "TZ=Asia/Shanghai" redis redis-server /usr/local/etc/redis/redis.conf
检查:
docker ps
测试:
进入docker容器或者外部直接连接
docker exec -it redis redis-cli
set aa b
get aa
redis config详情:
1.dbfilename是本地持久化存储数据库文件名,默认为dump.rdb。我可以在安装目录文件夹下找到这个文件。2.requirepass是密码,即连接服务器的密码,默认为空。下面我来设置一个密码然后用带密码的命令连接一遍。
3.msterauth设置连接mster服务的密码(主从服务器的主服务器)。
4.logfile日记记录的地址及文件名称。
5.maxmemory 设置最大内存
6.timeout一个客户端闲置多少秒后关闭,默认是0,代表禁止,永不关闭
7.auto-aof-rewrite-percentage AOF重写文件的百分比,如果是100表示整个文件重写,如果是0表示禁用AOF自动重写特性
8.auto-aof-rewrite-min-size 当前AOF文件大于多少是开始重写AOF文件
9.hash-max-zipmap-entries 512 配置字段最多512个。
10.hash-max-zipmap-value 64 配置value最大为64字节。
11.list-max-ziplist-entries 512 配置list最大长度512个
12.list-max-ziplist-value 64 配置list的value最大长度64字节
13.set-max-intset-entries 512 配置set最大长度512个
14.zset-max-ziplist-entries 128 配置zset最大长度512个
15.zset-max-ziplist-value 64 配置zset的value最大长度64字节
16.slowlog-log-slower-than 10000 配置这个告诉redis当一个命令执行超过多少时会被记录,单位是微秒。被记录的命令我们可以通过查看slowlog get 100(number) 查看
17.slowlog-max-len 128 设置日记记录的条数
18.port 6379 端口号为6379
19.databases 16 当前redis服务器有16个数据库
20.repl-ping-slave-period 10 salve根据时间间隔向master发送ping请求,默认是10秒。
21.repl-timeout 60 设置同步的超时时间 默认60秒
22.repl-backlog-size 1mb 设置数据备份的backlog大小,当一个slave在一段时间断开连接时记录salve数据的缓冲,当它重新连接时,不必同步全部数据。
23.repl-backlog-ttl 3600 当slave在一段时间断开后多少时间我们释放backlog中的数据。
24.maxclients 10000 最大同时连接的客户端数量
25.slave-priority 100 slave优先级,如果master不再正常工作了,哨兵将用它来选择一个slave提升为master。数字越小 优先级越高,但是数字为0时这个slave永远不会提升为master。
26.min-slaves-to-write N与min-slaves-max-lag M是一起设置的。表示如果master少于N个延迟小于等于M秒的已连接slave,就可以停止接收写操作。
27.slave-server-stale-date yes 当一个slave失去可master的连接时,或者正在进行同步中,我们设置slave-server-stale-date为yes表示slave会继续响应客户端请求,可能是正常数据,也可能是还没有获取值的空数据。如果我们设置slave-server-stale-date为no表示slave会"正在从matser同步(SYNC with master in prograess)"
28.slave-read-only yes 设置你的slave服务是否为只读
29.stop-write-on-bgsave-error yes 如果开启RDB并且最新的后台保存失败,将禁止用户对redis进行写的操作,提示用户保存失败了
30.daemonize no 默认在window下不支持这个配置,在linux下可以。表示默认redis不会作为守护进程运行。如果配置为yes就是守护进程,如果设置为守护进程就需要了解这个配置pidfile /var/run/redis.pid 配置守护进程的位置。
31.rdbcompression yes当导出rdb文件时是否用LZF压缩字符串对象。默认是yes,因为它几乎在任何情况下都是不错的,但是如果我们想节省CPU的话可以设置no,但是如果你有压缩了数据文件就会更大了。
32.rdbchecksum yes 是否添加一个校验放在文件最后,多消耗10%的性能。所有我们可以关掉它来提高性能。
33.aof-rewrite-incremental-fsnc yes 当一个子进程重写AOF文件时,如果启用,则文件每生成32M数据会被同步。为了增量式的写入硬盘并且避免大的延迟高峰这个指令是非常有用的。
34.dir 数据库工作的目录。
35.maxmemmory-policy volatile-lru 内存达到上线删除key的策略
volatile-lru -> 根据LRU算法生成的过期时间来删除。
allkeys-lru -> 根据LRU算法删除任何key。
volatile-random -> 根据过期设置来随机删除key。
allkeys->random -> 无差别随机删。
volatile-ttl -> 根据最近过期时间来删除(辅以TTL)
noeviction -> 谁也不删,直接在写操作时返回错误。3
36.appendfsync everysec fsync() 系统调用告诉操作系统把数据写到磁盘上,而不是等更多的数据进入输出缓冲区。
Redis支持三种不同的模式:
no:不要立刻刷,只有在操作系统需要刷的时候再刷。比较快。
always:每次写操作都立刻写入到aof文件。慢,但是最安全。
everysec:每秒写一次。折中方案。
37.save 900 1 save 300 10 save 60 10000 把数据库存在磁盘上
会在指定秒数和数据变化次数之后把数据库写到磁盘上。
下面的例子将会进行把数据写入磁盘的操作:
900秒(15分钟)之后,且至少1次变更
300秒(5分钟)之后,且至少10次变更
60秒之后,且至少10000次变更
38.loglevel notice
指定服务器调试等级
可能值:
debug (大量信息,对开发/测试有用)
verbose (很多精简的有用信息,但是不像debug等级那么多)
notice (适量的信息,基本上是你生产环境中需要的)
warning (只有很重要/严重的信息会记录下来)
39.client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60.
客户端的输出缓冲区的限制,可用于强制断开那些因为某种原因从服务器读取数据的速度不够快的客户端,
(一个常见的原因是一个发布/订阅客户端消费消息的速度无法赶上生产它们的速度)
可以对三种不同的客户端设置不同的限制:
normal -> 正常客户端
slave -> slave和 MONITOR 客户端
pubsub -> 至少订阅了一个pubsub channel或pattern的客户端
40.slaveof 127.0.0.1 6379 指定master服务的地址端口
41.bind 默认情况下所有网络都不访问,如果设置了bind就可以控制访问的网络。