目录

遇到的问题

docker里安装redis

执行命令

检查镜像

创建Redis配置文件

创建Redis容器并启动

docker远程访问

开放端口

Redis自启动

查看Redis是否运行

进入Redis容器

退出容器

RDB AOF

RDB

AOF 持久化



遇到的问题

  • 替换rdb文件后执行 命令重启redis, rdb被覆盖;

    docker restart redis 
  • 注意事项: 
  1. 一定要先停止redis容器再替换rdb, 最后启动
  2. 除此之外还要检查redis.config文件有没有开启aof备份, 如果开启了会优先加载文件夹下的aop文件

docker stop redis
# 替换rdp文件
docker start redis

docker里安装redis 

执行命令

docker pull redis 下载最新版Redis镜像 (其实此命令就等同于 : docker pull redis:latest )
docker pull redis:xxx 下载指定版本的Redis镜像 (xxx指具体版本号)

检查镜像

 docker images

创建Redis配置文件

启动前需要先创建Redis外部挂载的配置文件 ( /mydata/redis/conf/redis.conf )
之所以要先创建 , 是因为Redis本身容器只存在 /etc/redis 目录 , 本身就不创建 redis.conf 文件
当服务器和容器都不存在 redis.conf 文件时, 执行启动命令的时候 docker 会将 redis.conf 作为目录创建 , 这并不是我们想要的结果 .

## 创建目录
mkdir -p /mydata/redis/conf
## 创建文件
touch /mydata/redis/conf/redis.conf

创建Redis容器并启动

docker run \
-d \
--name redis \
-p 6379:6379 \
--restart unless-stopped \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
redis:buster 

docker远程访问

编辑docker.service

vi /usr/lib/systemd/system/docker.service

添加注释掉下面内容

#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

开放端口

### 开放端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent### 关闭端口
firewall-cmd --zone=public --remove-port=2375/tcp --permanent### 配置立即生效
firewall-cmd --reload   ###查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports###关闭防火墙
systemctl stop firewalld.service###查看防火墙状态
firewall-cmd --state

Redis自启动

  • docker update redis --restart=always 设置redis镜像自动启动

查看Redis是否运行

### 查看Docker运行中的容器
docker ps
docker ps | grep redis

进入Redis容器

### 通过 Docker 命令进入 Redis 容器内部
docker exec -it redis /bin/bash
docker exec -it redis bash### 进入 Redis 控制台
redis-cli### 添加一个变量为 key 为 name , value 为 bella 的内容
> set name bella### 查看 key 为 name 的 value 值
> get name### 或者也可以直接通过Docker Redis 命令进入Redis控制台 (上面两个命令的结合)
docker exec -it redis redis-cli### 查看rdp文件名称
config get dbfilename

退出容器

exit

RDB AOF

RDB 

具体过程:

  1. Redis调用fork创建一个子进程。(父子进程共享内存,直至其中一个进程对内存进行了写操作)
  2. 子进程负责将数据写入一个临时文件,父进程则继续处理数据库读写请求。
  3. 完全写入成功后,调用rename将新的RDB文件替换原来的RDB文件
  • save 调用SAVE命令时,Redis会执行同步保存,阻塞所有客户端,不再响应客户端发送的请求。SAVE命令一般来说只用于没有足够内存执行.如果内存中的数据非常大,可能会花费很多的时间,这样客户端的请求都会被阻塞!
  • bgsave:(background save) 命令,会fork出一个子进程,同时使用写时复制,将内存中的数据复制一份,写到一个新的rdb文件中。此时客户端的命令依然可以被正常执行,查询命令依然查询旧的数据,如果是修改命令,要同时修改原数据和复制出来的这份数据。对于等待保存占用的时间不敏感时才会使用。调用SHUTDOWN命令关闭服务器时也会先执行一次SAVE命令。

AOF 持久化

将修改的每一条指令记录进文件appendonly.aof中(先写入os cache,每隔一段时间fsync到磁盘)。

生产环境可以都启用,redis启动时如果既有rdb文件又有aof文件则优先选择aof文件恢复数据(数据恢复的更多,应为AOF方式丢失数据最小),因为aof一般来说数据更全一点。

AOF持久化方式的缺点是如果数据比较大的话,这个aof文件本身会比较大,而且恢复起来的速度比较慢。

AOF持久化方式的优点是可以将丢失的数据控制在1s中内,我们可以配置1s中同步一次。

#启动docker
service docker start#停止docker
service docker stop#重启docker
service docker restart# 开机自启
systemctl enable docker

docker恢复redis备份文件rdb被覆盖相关推荐

  1. Redis集群CentOS系统配置企业级数据备份方案以及数据恢复的操作(在开启AOF功能下恢复冷备RDB文件数据,保持AOF和RDB双开情况下恢复数据及错误的数据恢复步骤详解)

    1. 设置每小时保存一份 /var/redis/6379/dump.rdb 文件至指定目录(我这边存放在 /usr/local/redis_backup 目录下),并删除48小时前的文件.     为 ...

  2. redis恢复阿里云rdb文件

    redis恢复数据阿里云rdb文件 创建redis: docker run -d --name redis --restart=always -p 6379:6379 -v /etc/localtim ...

  3. docker安装redis提示没有日记写入权限_浅析Linux下Redis的攻击面(一)

    文章转自先知社区:https://xz.aliyun.com/t/7974 0x0 前言   Redis在内网渗透中常常扮演着重要的角色,其攻击方式非常多样化,在内网复杂的环境架构中容易出现各种问题, ...

  4. Docker部署Redis容器

    从仓库下载镜像 sudo docker pull redis 创建容器(前提:将redis.conf文件放入到/Users/chengang/docker/redis目录里面) docker run ...

  5. Centos7中Docker安装Redis

    一.查询Redis镜像 docker search redis 也可以去docker仓库地址搜索 https://hub.docker.com/search 二.拉取Redis镜像 #拉取最近的版本 ...

  6. docker 实现redis集群搭建

    摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Re ...

  7. Redis 通过 RDB 方式进行数据备份与还原

    Redis 通过 RDB 方式进行数据备份与还原 Intro 有的时候我们需要对 Redis 的数据进行迁移,今天介绍一下通过 RDB(快照)文件进行 Redis 数据的备份和还原 Redis 持久化 ...

  8. 手把手教你实现 Docker 部署 Redis 集群

    作者:我为什么要写这个 cnblogs.com/cxbhakim/p/9151720.html 摘要 接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试 ...

  9. linux 关闭redis 命令_面试必问的 Redis:RDB、AOF、混合持久化

    前言 本来说 Redis 分3篇,但是上周写持久化时发现持久化的内容还越多的,于是持久化就单拆一篇了. 我估计后面的主从复制.哨兵.集群内容也是不少,所以说实话,我也不知道之前说的3篇会拆成几篇了 持 ...

最新文章

  1. 结合项目实例 回顾传统设计模式(九)迭代器模式
  2. 蛙蛙推荐:几种典型的生产环境调试场景
  3. C++ 流体效果的实现
  4. LeetCode 424. Longest Repeating Character Replacement
  5. 前端学习(2575):vue-route使用场景
  6. Navicat15安装笔记
  7. 【离散数学】二元关系的闭包
  8. 2006的最后一篇之学车大结局
  9. js 延迟几秒执行ifarme_Node.js调试之llnode篇
  10. 20.校准相机——直接线性校准不均匀,直接线性校准变换,几何误差_3
  11. html5比赛策划书,FashionAI 天池竞赛 - Top5 技术方案简汇
  12. tp3.2框架运行原理
  13. rx550 黑苹果_黑苹果Hackintosh显卡入手指南
  14. 如何在教学中利用计算机网络,教师论苑(二十二)| 利用XMind思维导图优化计算机网络基础课堂教学...
  15. 图像处理——乘性噪声和加性噪声
  16. 办公室计算机打印机共享,办公室小技巧:如何设置共享打印机
  17. MGV2000_S905L系列_线刷_通刷固件
  18. 在Window10子系统Ubantu创建conda环境
  19. 博士五年,我在清华做时序数据库
  20. 自定义View时,用到Paint Canvas的一些温故,讲讲用路径绘画实现动画效果(基础篇 三)

热门文章

  1. 史上最污技术解读,60 个 IT 术语我竟然秒懂了.....
  2. 怎么卸载虚幻4_大神花120小时,用虚幻4打造英雄联盟,画质吊打原版游戏
  3. html 判断是否是数字,javascript如何判断值是否是数字?
  4. 让沉默的大数据为人工智能插上翅膀
  5. 开放式网络与封闭式网络
  6. 电商产品设计:商品的基本属性与销售属性
  7. java获取radio选中的值_获取radio值
  8. Android游戏开发大全
  9. G-PCC与V-PCC:为什么MPEG为点云压缩制作了两个编解码器?
  10. 第二篇:欧赔的体系形成与亚盘的贴水依据