资源网站建设多少钱,与网站建立的链接不安全怎么办,团队拓展训练,厦门市城市建设档案馆的网站文章目录一、redis知识汇总什么是redisredis的优缺点#xff1a;为什么要用redis做缓存redis为什么这么快什么是持久化redis持久化机制是什么#xff1f;各自优缺点#xff1f;AOF和RDB怎么选择redis持久化数据和缓存怎么做扩容什么是事务redis事务的概念ACID概念主从复制re…
文章目录一、redis知识汇总什么是redisredis的优缺点为什么要用redis做缓存redis为什么这么快什么是持久化redis持久化机制是什么各自优缺点AOF和RDB怎么选择redis持久化数据和缓存怎么做扩容什么是事务redis事务的概念ACID概念主从复制redis主从复制原理一、redis部署二、redis高可用一、redis知识汇总
什么是redis 是开源免费的高性能的k/v数据库 特点支持数据的持久化、可以将内存中的数据保存在磁盘中重启的时候再次加载使用不仅支持k/v类型的数据还提供list、set、zset有序集合、hash等数据结构的存储 支持数据的备份也就是master-slave模式的数据备份 redis的优缺点 优点 读写性能优异支持数据持久化、支持AOF、RDB两种持久化方式 支持事务redis所有操作都是原子性的 数据结构丰富 支持主从复制、可以进行读写分离 缺点 数据库内存受物理内存的限制不能作海量数据的高性能读写 不具备自动容错和恢复功能主机从机的宕机都会导致前端部分读写请求失败 主机宕机宕机前部分数据未能及时同步到从机切换ip会引起数据不一致的问题降低系统可用性 较难支持在线扩容集群容量达到上限时在线扩容会变得复杂。 为什么要用redis做缓存 主要是因为它的高性能、高并发 高性能用户第一次访问数据会从硬盘上读取但是他会将用户访问过的数据存在缓存中这样下次用户访问就是从缓存中获取数据也就是直接操作内存速度非常快 高并发直接操作缓存能够承受的请求量是远远大于直接访问数据库的如mysql如果请求量过大可能承受不住。 redis为什么这么快 完全基于内存绝大部分的请求是直接基于内存操作 数据结构简单对数据的操作也简单 采用单线程避免了多线程或者多线程的切换导致的CPU消耗不用考虑各种锁的问题 采用多路i/o复用模型 什么是持久化 持久化就是把内存的数据写到磁盘中去防止宕机后内存数据丢失 redis持久化机制是什么各自优缺点 持久化机制 RDB默认 AOF RDB是默认的持久化方式每隔一段时间就把内存中的数据保存到硬盘上的指定文件中。触发RDB的方式有手动触发和被动触发 手动触发对应save和bgsave命令 优点只有一个文件dump.rdb,方便做持久化 性能最大化fork子进程完成写操作保证io最大化 相对于数据集大时比AOF启动效率更高 缺点数据安全性低因为是没过一段时间进行数据持久化如果在这个间断发生故障就会导致数据丢失 AOFAOF是以日志形式记录每个动作每次操作都会以二进制命令的形式保存到指定文件中两种方式同时开启时数据恢复redis会优先选择AOF恢复 优点数据安全通过append模式写文件即使中途服务器宕机可以通过redis-check-aof工具解决数据一致性问题 如果不小心使用flushall命令清空所有数据只要还没执行rewrite那么就可以将日志文件中的flushall删除进行恢复 缺点AOF开启之后支持写的QPS美妙查询率会比RDB支持写的QPS低数据恢复比较慢不适合做冷备 AOF和RDB怎么选择 结合起来使用用AOF保证数据不丢失用RDB做不同程度的冷备在AOF文件丢失不可用时可以用RDB快速恢复 redis持久化数据和缓存怎么做扩容 如果redis被当做缓存使用使用一致性哈希实现动态扩容缩容 如果被当做持久化存储必须使用固定的keys-to-nodes映射关系节点数量一旦确定不能变化否则就要使用redis集群 什么是事务 事务是一个单独的隔离操作事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中不会被其他客户端发送来的命令请求所打断。事务是一个原子操作事务中的命令要么全部被执行要么全部都不执行。 redis事务的概念 Redis 事务的本质是通过MULTI(事物开始)、EXEC事务执行、WATCH等一组命令的集合。事务支持一次执行多个命令一个事务中所有命令都会被序列化。在事务执行过程会按照顺序串行化执行队列中的命令其他客户端提交的命令请求不会插入到事务执行命令序列中。总结redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。 ACID概念 原子性Atomicity 原子性是指事务是一个不可分割的工作单位事务中的操作要么都发生要么都不发生。 一致性 事务前后数据的完整性必须保持一致。 隔离性 多个事务并发执行时一个事务的执行不应影响其他事务的执行 持久性Durability 持久性是指一个事务一旦被提交它对数据库中数据的改变就是永久性的接下来即使数据库发生故障也不应该对其有任何影响 Redis的事务总是具有ACID中的一致性和隔离性其他特性是不支持的。当服务器运行在AOF持久化模式 下并且appendfsync选项的值为always时事务也具有耐久性。 主从复制 主从复制是指将一台 Redis 服务器的数据复制到其他的 Redis 服务器。前者称为 主节点(master)后者称为 从节点(slave)。且数据的复制是 单向 的只能由主节点到从节点。Redis 主从复制支持 主从同步 和 从从同步 两种后者是 Redis 后续版本新增的功能以减轻主节点的同步负担。 作用 数据冗余 主从复制实现了数据的热备份是持久化之外的一种数据冗余方式。 故障恢复 当主节点出现问题时可以由从节点提供服务实现快速的故障恢复 (实际上是一种服务的冗余)。 负载均衡 在主从复制的基础上配合读写分离可以由主节点提供写服务由从节点提供读服务 即写 Redis 数据时应用连接主节点读 Redis 数据时应用连接从节点分担服务器负载。尤其是在写少读多的场景下通过多个从节点分担读负载可以大大提高 Redis 服务器的并发量。 高可用基石 除了上述作用以外主从复制还是哨兵和集群能够实施的 基础因此说主从复制是 Redis 高可用的基础。 redis主从复制原理 保存主节点master信息 这一步只是保存主节点信息保存主节点的ip和port 主从建立连接 从节点slave发现新的主节点后会尝试和主节点建立网络连接 发送ping命令 连接建立成功后从节点发送ping请求进行首次通信主要是检测主从之间网络套接字是否可用、主节点当前是否可接受处理命令。 权限验证 如果主节点要求密码验证从节点必须正确的密码才能通过验证。 同步数据集 主从复制连接正常通信后主节点会把持有的数据全部发送给从节点。 命令持续复制 接下来主节点会持续地把写命令发送给从节点保证主从数据一致性 一、redis部署 下载并且编译将整个目录直接拷贝至另一台主机作为slave端 修改slave端的配置文件将master ip指向master端端口6379就完成了主从复制。redis的主从的配置比较简单。 我们可以看到在master上查看info就可以看到slave那里变成了1也就是现在我们有一个slave端以及这个slave端的ip、状态等等
二、redis高可用
首先我们需要再加一台slave配置方法和上边一样我们使用sentinel来做故障切换即高可用 完成之后我们在master端会看到slave数量为2相关的端口、ip也都会显示这些是做高可用的基础 首选我们需要在另外一台主机上ssh我们的master并且shutdown redis这个时候我们就会在log中看到master端down并且会选举出新的master端代替原来的master在我们重新又开启原来master的redis之后此主机就会成为slave并且指向新的刚选举出的master上。