docker
docker history 查看镜像的历史
docker export 容器id > 文件名.tar 导出容器(本质:导出镜像文件)
docker import redis.tar redis.V1 导入
export import (镜像名)
save load (容器名)
docker build 生成镜像
from 指定基础镜像
run 一次构建一层
docker pull redis 从公共的仓库主动拉取
docker run -itd --name redis-master docker镜像创建容器
docker image 查看镜像
docker ps -a 查看所有容器
docker rm 容器id 删除容器
docker exec -it redis-master bash 进入容器
add 复制文件
copy 更高级的复制文件,可以解压缩
expose 声明端口,方便映射
docker networks 查看网络
docker inspect 容器名 查看容器详细信息
docker logs 容器名 查看容器的日志
run 启动服务(创建镜像时执行)
CMD [ ' ' ] 启动服务(容器启动的时候执行)
entryPoint 入口点
workDir 指定工作目录(进入容器时默认打开的目录)
user 指定当前用户
env 设置环境变量
arg php-version 构建参数
volume 匿名卷
docker network ls 查看默认的网络
--network bridge xxx 在启动容器时使用 指定网络类型
iptable的nat 宿主机乃至外界的其他机器通信,通过端口映射
--network = none 容器就不会分配局域网的ip
docker network create --subnet = 192.0.0.1 指定自定义网络
redis主从配置
slaveof masterip masterport redids主从节点开启
masterauth pwd master实例启用密码保护
slave-read-only 指定slave是否只读
repl-disable-tcp-nodelay tcp协议合并小包一起发送
slave-priority 指定slave的优先级
info replication 查看复制的参数信息
master_repl_offset 主节点记录的复制偏移量
slave_repl_offset 从节点记录的复制偏移量
offset 偏移量
info server
runnid 服务器运行ID( runnid ) redis节点的唯一标识
ping pong
repl-backlog-size 缓冲区大小调节
backlog 积压 存储
slave-server-stale-data 当从机和主机失去连接时的运行方式
stale 不新鲜,难闻的
min-slaves-to-write 1 最少有多少台机器才能写入
min-slaves-max-lag 10 数据复制和同步的延迟不能超过10秒,否则主库拒绝写的请求
redis持久化
save / bgsave 手动把redis数据保存到硬盘的触发机制
save 900 1 自动触发机制 m秒内存在n次修改
bgrewriteaof 手动触发aof持久化的触发机制
auto-aof-rewrite-min-size aof重写时文件最小体积
auto-aof-rewrite-percentage aof文件空间
appendonly no 是否开启AOF
appendfilename 'appendonly.aof'
appendfsync everysec fsync持久化策略
fsync 函数同步
no-appendfsync-on-rewrite no aof重写期间是否禁止fsync
auto-load-truncated yes 如果aof文件结尾损坏,reids启动时是否仍加载aof文件
redis配置优化
info persistence
rdb_bgsave_in_progress
awk -f ":"
vm.overcommit_memory 为了让fork操作能够在低内存下也可以执行成功
THP (Transparent Huge Pges) 内存页 建议关闭,开启会增加重写期间父进程内存消耗
swappiness 虚拟内存 当物理内存不足时,可以把部分操作交给虚拟内存
OOM (out of memory) 避免进程不会无故被kill
Ulimit 单个用户同时打开的最大文件个数
rdbcompression no 是否压缩存储
rdbchecksum no 是否使用算法来进行数据校验
redis哨兵机制
sentinel 哨兵
min-slaves-to-write 1 要求最少要有1个节点
min-slaves-max-lag 10 数据复制和同步的延迟不能超过10s,否则主节点不接收任何写命令
sentinel monitor mymaster 127.0.0.1 7000 2 几台 Sentinel 发现有问题,就会发生故障转移
sentinel down-after-millseconds mymaster 30000 当你去 ping 一个机器的时候,多长时间后仍 ping 不通,那么就认为它是有问题
sentinel parallel-syncs mymaster 1 在一次故障转移之后,每次向新的主节点发起复制操作的从节点个数
sentinel auth-pass <master-name> <password>
sentinel failover-timeout mymaster 180000 故障转移的时间
sentinel masters 显示被监控的所有master以及它们的状态
sentinel master <master name> 显示指定master的信息和状态
sentinel slaves <master name> 显示所有slave以及它们的状态
sentinel get-master-addr-by-name <master name> 返回指定master的ip和端口
sentinel failover <master name> 强制sentinel执行failover,并且不需要得到其他sentinel的同意
redis分布式
cluster-enabled yes 开启集群模式
cluster-node-timeout 15000 节点超时时间
cluster-config-file 'nodes-6379.conf' 集群内部配置文件
cluster meet 节点间的握手
cluster nodes 确认集群节点是否彼此感知
cluster addslots 为节点分配槽
check host : port 检查集群
info host : port 查看集群信息
fix host : port 修复集群
reshard 在线迁移
rebalance host : port 平衡集群节点slot数量
add-node newHost : NewPort 加入新节点
del-node 从集群中删除节点
set-timeout host:port miliseconds 心跳连接的超时时间
call host:port 在集群全部节点上执行命令
import host:port 将外部redis数据导入集群