redis的配置和使用
redis的配置的分段的
配置段:
基本配置项
网络配置项
持久化相关配置
复制相关的配置
安全相关配置
Limit相关的配置
SlowLog相关的配置
INCLUDES
Advanced配置
通用配置项:GENERAL 这段
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16 设定数据库数量,默认为16个,每个数据库的名字均为整数,从0开始编号,默认操作的数据库为0;
切换数据库的方法:SELECT <dbid>
网络相关配置:NETWORK
bind IP 绑定 监听一个外部地址或网段 0.0.0.0 (所有地址)
port PORT 端口
protected-mode 保护模式
tcp-backlog tcp队列长度
unixsocket 本机连接
timeout:连接的空闲超时时长
安全配置:SECURITY
requirepass <PASSWORD> 认证的
rename-command <COMMAND> <NEW_CMND_NAME> 重命名
在AOF或Replication环境中,不推荐使用
Limits相关的配置
Maxclients 最大并发连接数
maxmemory <bytes> 最大内存
maxmemory-policy noeviction
淘汰策略:volatile-lru, allkeys-lru, volatile-random, allkeys-random, volatile-ttl, noeviction(不启用淘汰机制)
maxmemory-samples 5 淘汰算法运行时的采样样本数
SlowLog相关的配置: 慢查询
slowlog-log-slower-than 10000 =0.01s
单位是微秒;
slowlog-max-len 128 每行最大多少字节
SlowLog记录的日志最大条目;
ADVANCED配置: 高级配置
hash-max-ziplist-entries 512 关联数组最大512字节
hash-max-ziplist-value 64
设置ziplist的键数量最大值,每个值的最大空间;
client-output-buffer-limit normal 0 0 0 客户端一侧输出缓存空间大小
client-output-buffer-limit slave 256mb 64mb 60(硬限制256,软限制64,超出64部分在60s之后自动清除)
client-output-buffer-limit pubsub 32mb 8mb 60
redis的配置参数可以运行时修改
命令config
Config set 设定
Config get 获取
Config rewrite 将配置重写到配置文件中 永久有效
Config resetstat 重置一些计数器
如 info 计数器一些状态信息
Redis的持久化 备份
持久逻辑有两种 RDB(快照) AOF
RDB 配置SNAPSHOTTING 段
RDB:snapshotting, 二进制格式;按事先定制的策略,周期性地将数据从内存同步至磁盘;数据文件默认为dump.rdb;
客户端显式使用SAVE或BGSAVE命令来手动启动快照保存机制;
SAVE:同步,即在主线程中保存快照,此时会阻塞所有客户端请求;
BGSAVE:异步;backgroud
AOF:Append Only File, fsync 类似于二进制文件
记录每次写操作至指定的文件尾部实现的持久化;当redis重启时,可通过重新执行文件中的命令在内存中重建出数据库;
BGREWRITEAOF:AOF文件重写;把n次操作的语句的结果重置成一个最终状态的指令
不会读取正在使用AOF文件,而是通过将内存中的数据以命令的方式保存至临时文件中,完成之后替换原来的AOF文件;
RDB相关的配置:
save <seconds> <changes>
save 900 1
save 300 10
save 60 10000
save 5 200000
表示:三个策略满足其中任意一个均会触发SNAPSHOTTING操作;900s内至少有一个key有变化,300s内至少有10个key有变化,60s内至少有1W个key发生变化;
就自动启动快照
在snapshotting 配置段中
stop-writes-on-bgsave-error yes dump操作出现错误时,是否禁止新的写入操作请求;
rdbcompression yes 要不要压缩
rdbchecksum yes 每次快照后做校验
dbfilename dump.rdb:指定rdb文件名
dir /var/lib/redis:rdb文件的存储路径
AOF 在配置段APPEND ONLY MODE
appendonly no 启用默认没有启用
appendfilename "appendonly.aof"
appendsync everysec 内核每秒同步到磁盘
no:redis不执行主动同步操作,而是OS进行;
everysec:每秒一次;
always:每语句一次;
no-appendfsync-on-rewrite no 是否在后台执行aof重写期间不调用fsync,默认为no,表示调用;
uto-aof-rewrite-percentage 100 多久重写一次
auto-aof-rewrite-min-size 64mb 最少这么大时才出发重写
上述两个条件同时满足时,方会触发重写AOF;与上次aof文件大小相比,其增长量超过100%,且大小不少于64MB;
aof-load-truncated yes
注意:持久机制本身不能取代备份;应该制订备份策略,对redis库定期备份;
RDB与AOF同时启用:
(1) BGSAVE和BGREWRITEAOF不会同时进行;
(2) Redis服务器启动时用持久化的数据文件恢复数据,会优先使用AOF;