Redis非关系型数据库

1、Redis有几种集群模式

redis有三种集群模式:主从集群,哨兵集群模式、去中心化集群模式

主从模式:提供数据的多冗余,主节点和从节点提供相同的数据,主节点宕机后,集群不可用

哨兵模式:哨兵模式是官方推荐的高可用方案,但不是真正的高可用。哨兵模式是在主从集群基础上实现的,每个节点部署哨兵,涉及到主观下线和客观下线,当半数以上的哨兵认为master宕机后,会根据优先级从从节点中选取一个成为新的master,当坏掉的master恢复后,会自动成为从slave。解决了主从集群的单点故障问题,但是所有节点提供相同的服务,资源有点浪费

去中心化集群模式:采用无中心化结构,每个节点保存数据和整个集群的状态,每个节点中间能够进行内部通讯,redis-cluster的数据使用分片的方式实现,redis-cluster集群内置了16384个哈希槽,0-16383,当要存储一个key-value时,redis会对key进行crc16运算出一个结果,用这个结果对16384进行取余,然后将这个key分配到对应的节点哈希槽中。当连接任何一个节点获取这个数据时,也会有这样的算法,然后内部跳转到存放key的这个节点上。去中心化一般也会做成主从模式,一个主节点对应一个或多个从节点,当主节点宕机后,从节点会成为新的主节点。当主节点没有从节点时,集群不可用,当主节点和从节点同时失效,集群不可用。

2、Redis持久化方式有几种

2种,RDB、AOF

RDB相当于把数据拍了个快照,但是可能因为在拍快照的时候,有新的数据生成,导致数据不够完整。AOF的完整性会高一点,因为AOF记录的数据的的写指令,再重启之后,只需要将这些指令从新执行一遍,就能够恢复数据。我们一般使用的是RDB方式,AOF视情况开启,一般只会选择一种,因为开启两种的话,可能会对redis造成一定的压力。只用RDB的话虽然数据完整性不高,但是影响也不大,因为数据库中还有一份,只需要同步到redis就行。

3、Redis和Mysql的区别

mysql支持事务,redis不支持。mysql支持通用sql语句,redis不支持。mysql使用固定表结构,可用复杂查询。mysql的数据存储方式单一,redis数据存储比较灵活。mysql数据存储于磁盘,对于高并发的读写请求,磁盘io是很大的瓶颈。redis的数据存储于磁盘或者内存中,读写效率更高。

4、redis针对内存过高,有其他操作吗

设置key的过期时间,对于不经常使用的key过期时间可以设置的小一点。redis会将所有设置了过期时间的key放入一个字典中,然后每隔一段时间从字典中随机取一些key检查过期时间,并删除已过期的key。

5、reids上存储什么数据

热点数据:一般会存一些经常查询且变动不是很频繁的数据

比如:新闻网站实时热点、微博热搜等,需要频繁更新。总数据量大得时候直接从数据库中查询会影响性能。

电商网站信息:大型电商平台初始化页面数据的缓存。比如去哪网购买机票的时候首页的价格和你点进去的价格会有差异

6、mysql和redis为什么结合使用

当网站的处理和访问量非常大的时候,我们数据库的压力就变大了,数据库同时处理数据的能力就会大打折扣。使用redis,将表中经常访问的数据记录到Redis中,用户查询时先去查询redis中的数据,没有的话再查询mysql,由于数据是存储在内存中的,处理速度会非常快。

7、redis怎么做数据备份

RDB快照:备份文件,文件大小比较大

AOF备份:备份的是语句

8、redis哨兵原理

哨兵是一个独立的进程,原理就是哨兵通过发送命令,等待redis主节点响应,超过指定时间没有响应,哨兵会认为主节点下线了,选举从节点成为主节点。其中涉及到一个主观下线和客观下线。指定时间内哨兵没收收到目标节点的响应会认为 该节点主观下线,当半数以上的哨兵认为该节点下线后则认为客观下线,然后会发起选举,选举从节点成为主节点。

相关推荐
独自归家的兔几秒前
ubuntu系统安装dbswitch教程 - 备份本地数据到远程服务器
linux·运维·ubuntu
ONE_SIX_MIX4 分钟前
ubuntu 24.04 用rdp连接,桌面黑屏问题,解决
linux·运维·ubuntu
龙飞054 分钟前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl
*小海豚*5 分钟前
在linux服务器上DNS正常,但是java应用调用第三方解析域名报错
java·linux·服务器
June`5 分钟前
muduo项目排查错误+测试
linux·c++·github·muduo网络库
春日见7 分钟前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
DARLING Zero two♡15 分钟前
告别 Docker 命令行!Portainer+cpolar 让容器管理从局域网走向公网
运维·docker·容器
消失的旧时光-194321 分钟前
Linux 编辑器入门:nano 与 vim 的区别与选择指南
linux·运维·服务器
斯普信专业组23 分钟前
构建基于MCP的MySQL智能运维平台:从开源服务端到交互式AI助手
运维·mysql·开源·mcp
晓131331 分钟前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言