ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

04redis面试宝典

2020-03-12 16:06:18  阅读:220  来源: 互联网

标签:持久 Redis 备份 RDB redis 宝典 面试 04redis rdb


目录

1.Redis简介

1.1Redis执行原理

1.2Redis常用数据类型

2.从海量数据里查询某一固定前缀的Key

3.如何通过redis实现分布式锁

3.1如何解决分布式锁

3.2redis2.2之后的使用

4.如何实现异步队列

4.1一对一

4.2一对多

5.redis持久化

5.1Redis如何做持久化

RDB持久化

AOF持久化

5.2RDB和AOP的优缺点

5.3混合模式备份

6.redis同步机制

6.1主从同步原理

6.2全同步过程

6.3增量同步过程

6.4redis哨兵模式(Redis Sentinel)

6.5流言协议Gossip

7.redis的集群原理

Hash环的数据倾斜问题

8.总结


1.Redis简介

Memcache和Redis的区别?

为什么Redis能这么快?

1.1Redis执行原理

多路IO复用

1.2Redis常用数据类型

Redis底层数据类型

 

2.从海量数据里查询某一固定前缀的Key

先问清楚数据量是多大。

我们改用下图方式实现。

左边客户端等待30秒

 

3.如何通过redis实现分布式锁

3.1如何解决分布式锁

如何解决setnx长期有效的问题

以上代码中会出现什么问题呢?

如果setnx之后,代码挂掉了,后面的逻辑执行不到了。

3.2redis2.2之后的使用

 

4.如何实现异步队列

4.1一对一

有没有其他方法实现队列呢?有!

左边等待消息,右边push消息。

4.2一对多

想解决这个问题,需要使用专业的MQ

 

5.redis持久化

5.1Redis如何做持久化

RDB持久化

找到我们的redis.conf文件,在redis安装的根目录下。

我们搜索save

900表示900s内有一次写入指令,就会产生1次快照。

300表示300s内有一次写入指令,就会产生快照,如果是0<变动数<10,就会等到900s后才去做备份。

60表示60s内又1w条写入,我们就进行一次备份。

stop-writes-on-bgsave-error yes表示当备份进程出错的时候,主进程就停止新的写入操作,保护持久化数据一致性。

rdbcompression no表示rdb文件备份,在rdb文件备份时,将文件进行压缩后才备份。我们设置为no。

redis系统会定期备份文件在dump.rdb文件中

 

如上图所示,执行save保存,退出连接后可以看到生成rdb文件。

删除rdb文件,执行lastsave,会返回上次保存rdb文件的时间戳。

我们执行bgsave,重新保存一份,会发现lastsave的时间戳发生了改变。

 

自动化触发RDB

AOF持久化

同样的,进入redis.conf文件

搜索appendonly设置为yes,就会生效。

搜索appendfsync,默认每秒备份一次。配置完成之后重启redis服务

重启的时候我们可以看到它发送了一个shutdown指令,之后窒息感save指令,这里在保存我们的rdb文件。

当我们执行一条写入操作时,会在目录下看到生成了aof文件。

 

5.2RDB和AOP的优缺点

5.3混合模式备份

redis4.0之后推出的。

 

6.redis同步机制

使用pipeline的好处

6.1主从同步原理

6.2全同步过程

6.3增量同步过程

6.4redis哨兵模式(Redis Sentinel)

6.5流言协议Gossip

 

7.redis的集群原理

顺时针存储key在最近的节点上,如ObjectB就存储在NodeB上

如下图,如果NodeC服务奔溃,我们的对象也会顺时针存储在下一台NodeD服务器上。

如下图,如果我们新增NodeX,对其他Node节点不会影响,只需要我们在Object重新定位到NodeX节点上。

Hash环的数据倾斜问题

引入虚拟节点解决数据倾斜的问题

 

8.总结

redis和Memcache

多路io复用

常用类型

海量数据筛选条件key

实现简单的分布式锁

实现异步队列

持久化:RDB,AOF,混合

AOF:redis主从,redis哨兵,redis集群。

  

标签:持久,Redis,备份,RDB,redis,宝典,面试,04redis,rdb
来源: https://blog.csdn.net/qq_42035966/article/details/104764120

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有