Redis里的数据都是保存在内存中,关闭服务器必须进行数据备份。

1、Redis的数据持久化

bgsave做镜像全量持久化,AOF做增量持久化。

bgsave的原理:fork和cow(copy on write)fork是redis通过创建子进程来进行bgsave操作,子进程创建后,父子进程共享数据段,父进程继续提供读写服务,并不会阻塞,写脏的页面数据会逐渐和子进程分离开。

bgsave是fork出一个子进程,子进程负责调用RDBsave,并在保存完成之后向主进程发送信号,通知保存已经完成。因为RDBsave在子进程被调用,所以Redis服务器在BGsave执行期间仍然可以处理客户端的请求,一般常用bgsave进行线上数据处理。

save:是直接调用RDBsave,阻塞掉redis主进程,直到保存完成为止。在主进程阻塞的期间,服务器不能处理客户端的任何请求。

bgsave的缺点:因为bgsave会耗费较长时间,不够实时,服务器假如停机的时候会导致大量丢失数据,所以需要AOF来配合使用。在redis实例重启的时候,会使用bgsave持久化文件重新构建内存,在使用AOF重放近期的操作指令来实现完整恢复重启之前的状态。AOF日志功能有SYNC属性的配置,如果不要求性能的话,可以在每写指令时都SYNC一下磁盘,就不会丢失数据。但是在高性能的要求下,每次都SYNC肯定不现实。一般都是定时使用SYNC,配置SYNC时间。

,2、Redis的同步机制

Redis可以使用主从同步,从从同步,第一次同步,主节点做一次bgsave,并同时将后续修改操作记录在内存buffer,等到将RDB文件全量同步到复制节点,复制节点接受完成后将RDB镜像加载到内存。加载完成后,在通知主节点将期间修改的操作记录同步到复制节点,就进行重放,这就是同步过程。

3、Redis的集群原理

Redis有两种集群方式

Redis Sentinal:高可用,在master宕机时会自动将slave提升为master,继续提供服务。

Redis Cluster:着眼于扩展性,单个Redis内存不足的时候,使用Cluster进行分片存储。

4、Redis的性能常见问题

  1、master不要做任何持久化工作,比如RDB内存快照,AOF日志文件,不然降低效率

  2、如果数据重要,slave开启了AOF备份数据,配置SYNC的时间设置为一秒同步写入磁盘一次。

  3、为了主从复制的速度和连接稳定性,master和slave放在同一个局域网内

5、假如说Oracle数据库里有5000w条数据,redis只存20w条数据,怎么保证redis中的数据都是热点数据

redis内存数据集大小上升到一定大小的时候,就会实施数据淘汰策略

redis的数据淘汰策略有:

  volatile-LRU:在已设置过期时间的数据集(server.db[i].expries)中选最近最少使用的数据淘汰。

  volatile-TTL:在已设置过期时间的数据集中挑选将要过期的数据淘汰。

  volatile-Random:在已设置过期时间的数据集中任意选择数据淘汰

  allkeys-LRU:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

  allkeys-Random:从数据集(server.db[i].dict)中任意选择数据淘汰

  no-enviction(驱逐):禁止驱逐数据。

一、Redis数据备份与恢复的更多相关文章

  1. Redis 数据备份与恢复,安全,性能测试,客户端连接,管道技术,分区(四)

    Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 re ...

  2. redis开启持久化、redis 数据备份与恢复

    redis持久化介绍  https://segmentfault.com/a/1190000015897415 1. 开启aof持久化.以守护进程启动.远程访问先把配置文件拷贝一份到/etc/redi ...

  3. Redis 数据备份与恢复

    Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 redis 127.0.0.1: ...

  4. redis数据备份与恢复

    1.启动redis 进入redis目录 redis-cli 2.数据备份 redis 127.0.0.1:6379> SAVE 该命令将在 redis 备份目录中创建dump.rdb文件. 3. ...

  5. 8.Redis 数据备份与恢复

    转自:http://www.runoob.com/redis/redis-tutorial.html Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下 ...

  6. Redis—数据备份与恢复

    https://www.cnblogs.com/shizhengwen/p/9283973.html https://blog.csdn.net/w2393040183/article/details ...

  7. Redis之数据备份与恢复

    Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 re ...

  8. Redis数据备份、安全、管理服务器笔记

    Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 实例 redis > SAVE OK 恢复数据 如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 ...

  9. 数据备份与恢复 半持久化 全持久化 fork aof rdb Backing up Disaster recovery 备份 容灾

    Redis数据备份与恢复 - 流年晕开时光 - 博客园 https://www.cnblogs.com/deny/p/11531355.html Redis数据备份与恢复 Redis所有数据都是保存在 ...

随机推荐

  1. 《机器学习实战》之k-近邻算法(手写识别系统)

    这个玩意和改进约会网站的那个差不多,它是提前把所有数字转换成了32*32像素大小的黑白图,然后转换成字符图(用0,1表示),将所有1024个像素点用一维矩阵保存下来,这样就可以通过knn计算欧几里得距 ...

  2. 利用JavaScriptSOAPClient直接调用webService --完整的前后台配置与调用示例

    JavaScriptSoapClient下载地址:https://archive.codeplex.com/?p=javascriptsoapclient JavaScriptSoapClient的D ...

  3. SQLServer代理新建或者编辑作业报错

    SQLServer代理新建或者编辑作业的时候报错如下 错误信息: 标题: Microsoft SQL Server Management Studio------------------------- ...

  4. _itemmod_unbind

    该表中的物品可以用一定代价进行解绑,解绑后可以移动,但下线将会导致物品重新绑定 `entry`物品entry `reqId` 解绑消耗模板Id `备注` 备注

  5. python 移动文件夹

    xxx@ddd:~$ mkdir testa testb >>> import shutil >>> shutil.move("/home/xxx/tes ...

  6. module.exports小程序模块化,require

    小程序模块化 可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块.模块只有通过 module.exports 或者 exports 才能对外暴露接口. tips:exports 是 mo ...

  7. 兼容低版本 ie 的思路

    兼容处理 ie 低版本,推荐三条路径: 一.css hack,适用于代码初建阶段,也就是说在开发功能之前要思考的问题点,这里总结几个常见的: 1.- 区分 ie6 与 ie7以上 ( -text-in ...

  8. MySQL学习(十三)

    编码问题 乱码是如何形成的 1 解码时与实际编码不一致 可修复 2 传输过程中,编码不一致,导致字节丢失,不可修复,如把utf8转为GB2312 连接器的特性:连接客户端和服务器,客户端的字符先发给连 ...

  9. springboot 解决配置js/css/img缓存问题

    # 解决配置js/css/img缓存问题 spring.resources.chain.strategy.content.enabled=true spring.resources.chain.str ...

  10. 牛客小白月赛7 B 自杀游戏

    自杀游戏 思路: sg函数 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include&l ...