| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Redis (四) --------- Redis 高级 -> 正文阅读 |
|
[大数据]Redis (四) --------- Redis 高级 |
目录一、Redis 事务1、什么是事务事务是指一系列操作步骤,这一系列的操作步骤,要么完全地执行,要么完全地不执行。Redis 中的事务 (transaction) 是一组命令的集合,至少是两个或两个以上的命令,redis 事务保证这些命令被执行时中间不会被任何其他操作打断。 2、事务操作的命令① multi
② exec
③ discard
④ watch
⑤ unwatch
3、事务的实现(1) 正常执行事务 事务的执行步骤:首先开启事务,其次向事务队列中加入命令,最后执行事务提交 例 1:事务的执行: 1)multi:用 multi 命令告诉 Redis,接下来要执行的命令你先不要执行,而是把它们暂时存起来(开启事务) 2)saddworks john 第一条命令进入等待队列(命令入队) 3)sadd works rose 第二条命令进入等待队列(命令入队) 4)exce 告知 redis 执行前面发送的两条命令(提交事务)
执行事务步骤: 1)MULTI 正常命令 2)SET key value 正常命令 3)INCR 命令语法错误 4)EXEC 无法执行事务,那么第一条正确的命令也不会执行,所以 key 的值不会设置成功 (3) 事务执行 exec 命令后,命令执行错误,事务提交 执行步骤: 1)MULTI 正常命令 2)SET username zhangsan 正常命令 3)lpop username 正常命令,语法没有错误,执行命令时才会有错误 4)EXEC 正常执行,发现错误可以在事务提交前放弃事务,执行 discard
Redis 这种设计原则是:
(4) 放弃事务 执行步骤: 1)MULTI 开启事务 2)SET age 25 命令入队 3)SET age 30 命令入队 4)DISCARD 放弃事务,则命令队列不会被执行 (5) Redis 的 watch 机制
二、持久化1、持久化概述持久化可以理解为存储,就是将数据存储到一个不会丢失的地方,如果把数据放在内存中,电脑关闭或重启数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘就算是一种持久化。 2、持久化方式RDB 方式什么是 RDB 方式?
如何实现 ? RDB 方式的数据持久化,仅需在 redis.conf 文件中配置即可,默认配置是启用的。在配置文件 redis.conf 中搜索 SNAPSHOTTING,查找在注释开始和结束之间的关于 RDB的配置说明。配 SNAPSHOTTING 置地方有三处。 ①配置执行 RDB 生成快照文件的时间策略 对 Redis 进行设置,让它在 “N 秒内数据集至少有 M 个 key 改动” 这一条件被满足时,自动保存一次数据集。 配置格式:
② dbfilename 设置 RDB 的文件名,默认文件名为 dump.rdb 修改成 mydump.rdb ③ dir 指定 RDB 文件的存储位置,默认是 ./ 当前目录 总结 优点:
缺点:
AOF 方式什么是 AOF 方式 ?
如何实现 ? AOF 方式的数据持久化,仅需在 redis.conf 文件中配置即可 配置项: ① appendonly :默认是 no,改成 yes 即开启了 aof 持久化 ③ dir :指定 RDB 和 AOF 文件存放的目录,默认是 ./
⑤ auto-aof-rewrite-min-size :允许重写的最小 AOF 文件大小,默认是 64M 。当 aof 文件大于 64M 时,开始整理 aof 文件,去掉无用的操作命令,缩小 aop 文件 总结
三、主从复制1、主从复制 – 读写分离通过持久化功能,Redis 保证了即使在服务器重启的情况下也不会丢失(或少量丢失) 数据,但是由于数据是存储在一台服务器上的,如果这台服务器出现故障,比如硬盘坏了,也会导致数据丢失。 Redis 的主从复制
读写分离 : 参考这篇文章 https://blog.csdn.net/qq_39669058/article/details/87720731 容灾处理 :当 Master 服务出现故障,需手动将 slave 中的一个提升为 master,剩下的 slave 挂至新的 命令: 操作指令 进入客户端需指定端口: 总结 ? 一个 master 可以有多个 slave ? slave 下线,读请求的处理性能下降 ? master 下线,写请求无法执行 ? 当 master 发生故障,需手动将其中一台 slave 使用 slaveof no one 命令提升为master,其它 slave 执行 slaveof 命令指向这个新的 master,从新的 master 处同步数据 ? 主从复制模式的故障转移需要手动操作,要实现自动化处理,这就需要 Sentinel 哨兵,实现故障自动转移 2、高可用 Sentinel 哨兵Sentinel 哨兵是 redis 官方提供的高可用方案,可以用它来监控多个 Redis 服务实例的运行情况。Redis Sentinel 是一个运行在特殊模式下的 Redis 服务器。Redis Sentinel 是在多个 Sentinel 进程环境下互相协作工作的。 Sentinel 系统有三个主要任务: ?监控:Sentinel 不断的检查主服务和从服务器是否按照预期正常工作。 ?提醒:被监控的 Redis 出现问题时,Sentinel 会通知管理员或其他应用程序。 ?自动故障转移:监控的主 Redis 不能正常工作,Sentinel 会开始进行故障迁移操作。将一个从服务器升级新的主服务器。让其他从服务器挂到新的主服务器。同时向客户端提供新的主服务器地址。 Sentinel 配置 可以参考这篇文章 :https://blog.csdn.net/L835311324/article/details/83870657 监控 ? Sentinel 会不断检查 Master 和 Slave 是否正常 ? 如果 Sentinel 挂了,就无法监控,所以需要多个哨兵,组成 Sentinel 网络,一个健康的 Sentinel 至少有 3 个 Sentinel 应用。彼此在独立的物理机器或虚拟机。 ?监控同一个 Master 的 Sentinel 会自动连接,组成一个分布式的 Sentinel 网络,互相通信 并交换彼此关于被监控服务器的信息 ?当一个 Sentinel 认为被监控的服务器已经下线时,它会向网络中的其它 Sentinel 进行确认,判断该服务器是否真的已经下线 ?如果下线的服务器为主服务器,那么 Sentinel 网络将对下线主服务器进行自动故障转移,通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转移到新的主服务器下,以此来让系统重新回到正常状态 ?下线的旧主服务器重新上线,Sentinel 会让它成为从,挂到新的主服务器下 总结
四、安全设置1、设置密码访问 Redis 默认是没有密码的,这样不安全,任意用户都可以访问。可以启用使用密码才能访问 Redis。设置 Redis 的访问密码,修改 redis.conf 中这行 requirepass 密码。密码要比较复杂,不容易破解,而且需要定期修改。因为 redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行 150K 次的密码尝试,需要指定非常非常强大的密码来防止暴力破解。 开启访问密码设置: 找到 requirepass 行去掉注释,requirepass 空格后就是密码 2、修改默认端口修改 redis 的端口,这一点很重要,使用默认的端口很危险,redis.conf 中修改 port 6379 将其修改为自己指定的端口(可随意),端口 1024 是保留给操作系统使用的。用户可以使用的范围是 1024 - 65535 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:11:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |