当前位置: 首页 > news >正文

海珠区 网站设计自适应网站建设需要注意什么

海珠区 网站设计,自适应网站建设需要注意什么,网站做小学一年二班作业怎么做,网站维护的重要性一、持久化 Redis 是内存数据库#xff0c;如果不将内存中的数据库状态保存到磁盘#xff0c;那么一旦服务器进程退出#xff0c;服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能#xff01; 1.1、RDB#xff08;Redis DataBase#xff09; 1.1.1 …一、持久化         Redis 是内存数据库如果不将内存中的数据库状态保存到磁盘那么一旦服务器进程退出服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能 1.1、RDBRedis DataBase 1.1.1 概念 在指定的时间间隔内将内存中的数据集快照写入磁盘也就是行话讲的 Snapshot 快照它恢复时是将快照文件直接读到内存里。 Redis 会单独创建fork一个子进程来进行持久化会先将数据写入到一个临时文件中待持久化过程都结束了再用这个临时文件替换上次持久化好的文件。整个过程中主进程是不进行任何 IO 操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复且对于数据恢复的完整性不是非常敏感那 RDB 方式要比 AOF 方式更加的高效。RDB 的缺点是最后一次持久化后的数据可能丢失。 Redis 默认的就是 RDB一般情况下不需要修改这个配置。 rdb 默认保存的文件就是 dump.rdb都是在我们配置文件的快照部分配置的如下所示 1.1.2 手动配置 修改 redis.conf 配置文件如下图所示 记得输入 config.rewrite 命令重启下 redis 服务使配置文件更新 # 客户端1 先删除 dump.rdb 文件 [rootlocalhost bin]# ls dump.rdb myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server [rootlocalhost bin]# rm -f dump.rdb [rootlocalhost bin]# ls myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server# 客户端2 执行 set 操作 127.0.0.1:6379 mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5 OK# 等1分钟后再次查看客户端1发现自动生成了 rdb 文件 [rootlocalhost bin]# ls dump.rdb myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server 1.1.3 触发机制 1、 save 的规则满足的情况下会自动触发 rdb 规则产生 rdb 文件 # 客户端 1 查看 [rootlocalhost bin]# ls myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server# 客户端 2 执行 save 命令 127.0.0.1:6379 save OK# 客户端 1 再次查看 [rootlocalhost bin]# ls dump.rdb myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server 2、执行 flushall 命令会自动触发 rdb 规则产生 rdb 文件 # 客户端 1 查看 [rootlocalhost bin]# ls myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server# 客户端 2 执行 flushall 命令 127.0.0.1:6379 flushall OK# 客户端 1 再次查看 [rootlocalhost bin]# ls dump.rdb myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server 3、退出 redis会自动触发 rdb 规则产生 rdb 文件 # 客户端 1 查看 [rootlocalhost bin]# ls myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server# 客户端 2 执行退出命令 127.0.0.1:6379 shutdown not connected exit# 客户端 1 再次查看 [rootlocalhost bin]# ls dump.rdb myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server 1.1.4 恢复 rdb 文件 只需要将 rdb 文件放在我们 redis 启动目录即可redis 启动的时候就会自动检查 dump.rdb恢复其中的数据查看需要存在的位置命令 127.0.0.1:6379 config get dir 1) dir 2) /usr/local/bin # 如果在这个目录下存在 dump.rdb 文件启动就会自动恢复其中的数据 1.1.5 优点 1、适合大规模的数据恢复 2、对数据完整性和一致性要求不高 1.1.6 缺点 1、需要在一定间隔时间做一次备份所以如果 redis 意外宕机了就会丢失最后一次快照后的所有修改。         2、fork 进程的时候会占用一定的内存空间。 1.2、AOFAppend Only File 1.2.1 概念 以日志的形式来记录每个写操作将 Redis 执行过的所有指令记录下来读操作不记录只许追加文件但不可以改写文件redis 启动之初会读取该文件重新构建数据换言之redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。 AOF 保存的是 appendonly.aof 文件 1.2.2 手动配置 默认是不开启的需要我们手动进行配置我们只需要将 appendonly 改为 yes 就开启了。 AOF 采用文件追加方式文件会越来越大为避免出现此种情况新增了重写机制当 AOF 文件的大小超过所设定的阈值时Redis 就会启动 AOF 文件的内容压缩只保留可以恢复数据的最小指令集可以使用命令 bgrewriteaof   1.2.3 触发机制 Redis 会记录上次重写时的 AOF 大小默认配置是当 AOF 文件大小是上次 rewrite 后大小的已被且文件大于 64M 的触发。 # 客户端1查看当前目录的文件如果存在 rdb 文件先删除就好了 [rootlocalhost bin]# ls myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server# 客户端2启动 redis 服务 [rootlocalhost bin]# redis-server myredis/redis.conf [rootlocalhost bin]# redis-cli -p 6379 127.0.0.1:6379 # 客户端1再次查看当前目录的文件发现生成了 appendonlydir 目录并存储了相关的文件 [rootlocalhost bin]# ls appendonlydir myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server [rootlocalhost bin]# cd appendonlydir/ [rootlocalhost appendonlydir]# ls appendonly.aof.1.base.rdb appendonly.aof.1.incr.aof appendonly.aof.manifest 1.2.4 异常恢复 当 aof 文件发生损坏的时候可以使用 redis-check-aof 工具来修复我们模拟下这个场景。 # 客户端1清空数据库并重新赋值然后退出 redis 127.0.0.1:6379 flushdb OK 127.0.0.1:6379 set k1 v1 OK 127.0.0.1:6379 set k2 v2 OK 127.0.0.1:6379 set k3 v3 OK 127.0.0.1:6379 set k4 v4 OK 127.0.0.1:6379 set k5 v5 OK 127.0.0.1:6379 shutdown not connected exit# 客户端2 首先删除dump.rdb 文件 [rootlocalhost bin]# ls appendonlydir dump.rdb myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server [rootlocalhost bin]# rm -f dump.rdb [rootlocalhost bin]# ls appendonlydir myredis redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server # 修改我们的 aof 文件舔些垃圾数据 [rootlocalhost bin]# cd appendonlydir/ [rootlocalhost appendonlydir]# vim appendonly.aof.1.incr.aof [rootlocalhost appendonlydir]# cd .. # 启动 redis 的服务端 [rootlocalhost bin]# redis-server myredis/redis.conf 58643:C 29 Aug 2023 20:14:27.081 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add vm.overcommit_memory 1 to /etc/sysctl.conf and then reboot or run the command sysctl vm.overcommit_memory1 for this to take effect. # 启动 redis 的客户端发现无法启动 [rootlocalhost bin]# redis-cli -p 6379 Could not connect to Redis at 127.0.0.1:6379: Connection refused not connected # 执行 redis-check-aof --fix 修复的文件名 来修复文件 [rootlocalhost bin]# redis-check-aof --fix appendonlydir/appendonly.aof.1.incr.aof Start checking Old-Style AOF 0x 13e: Expected \r\n, got: 3131 AOF analyzed: filenameappendonlydir/appendonly.aof.1.incr.aof, size353, ok_up_to301, ok_up_to_line76, diff52 This will shrink the AOF appendonlydir/appendonly.aof.1.incr.aof from 353 bytes, with 52 bytes, to 301 bytes Continue? [y/N]: y Successfully truncated AOF appendonlydir/appendonly.aof.1.incr.aof# 上面提示我们成功的修复了文件再次重新启动下就可以了只是 k5 被优化掉了但也没法办法 [rootlocalhost bin]# redis-server myredis/redis.conf [rootlocalhost bin]# redis-cli -p 6379 127.0.0.1:6379 mget k1 k2 k3 k4 k5 1) v1 2) v2 3) v3 4) v4 5) (nil)1.2.5 优点 1、每一次修改都同步文件的完整性会更加好 2、每秒同步一次可能会丢失一秒的数据 3、从来都不需要同步效率会比较高 1.2.6 缺点 1、相对于数据文件来说aof 远远大于 rdb修复的速度也比 rdb 慢 2、aof 的运行效率也要比 rdb 慢所以我们 redis 默认的配置就是 rdb 持久化 1.2.7 小总结 1.3、总结 1.3.1 持久化方式对比 RDB 持久化方式能够在指定的时间间隔内对你的数据进行快照存储。         AOF 持久化方式记录每次对服务器写的操作当服务器重启的时候会重新执行这些命令来恢复原始的数据AOF 命令以 Redis 协议追加保存每次写的操作到文件末尾Redis 还能对 AOF 文件进行后台重写使得 AOF 文件的体积不至于过大。 1.3.2 缓存对比 只做缓存如果你只希望你的数据在服务器运行的时候存在你也可以不使用任何持久化 1.3.3 同时开启两种持久化对比 在这种情况下当 redis 重启的时候会优先载入 AOF 文件来恢复原始的数据因为在通常情况下 AOF 文件保存的数据集要比 RDB 文件保存的数据集要完整。 RDB 的数据不实时同时使用两者时服务器重启也只会找 AOF 文件那要不要只使用 AOF 呢作者建议不要因为 RDB 更适合用于备份数据库AOF 在不断变化不好备份快速重启而且不会有 AOF 可能潜在的 Bug留着作为一个万一的手段。 1.3.4 性能建议 因为 RDB 文件只用作后备用途建议只在 Slave 上持久化 RDB 文件而且只要15分钟备份一次就够了只保留 save 900 1 这条规则。 如果 Enable AOF 好处是在最恶劣情况下也只会丢失不超过两秒数据启动脚本较简单只 load 自己的 AOF 文件就可以了代价一是带来了持续的 IO二是 AOF rewrite 的最后将 rewrite 过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可应该尽量减少 AOF rewrite 的频率AOF 重写的基础大小默认值 64M 太小了可以设到 5G 以上默认超过原大小 100% 大小重写可以改到适当的数值。 如果不 Enable AOF 仅靠 Master-Slave Repllcation 实现高可用性也可以能省掉一大笔 IO也减少了 rewrite 时带来的系统波动。代价是如果 Master/Slave 同时倒掉会丢失十几分钟的数据启动脚本也要比较两个 Master/Slave 中的 RDB 文件载入较新的那个微博就是这种架构。  二、发布订阅 2.1 概念 Redis 发布订阅pub/sub是一种消息通信模式发送者pub发送消息订阅者sub接收消息。 Redis 客户端可以订阅任意数量的频道。 2.2 模型图 订阅/发布消息图如下 下图展示了频道 channel1 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系 当有新消息通过 PUBLISH 命令发送给频道 channel1 时 这个消息就会被发送给订阅它的三个客户端 2.3 相关命令 # 订阅一个或多个符合给定模式的频道 psubscribe pattern [pattern]# 查看订阅与发布系统状态 pubsub subcommand [argument[argument...]]# 将信息发送到指定的频道 publish channel message# 退订所有给定模式的频道 punsubscribe [pattern[pattern...]]# 订阅给定的一个或多个频道的信息 subscribe channel [channel...]# 退订指定的频道 unsubscribe [channel[channel...] 2.4 测试 以下实例演示了发布订阅是如何工作的。在我们实例中我们创建了订阅频道名为 redisChat # 订阅一个频道 redisChat 127.0.0.1:6379 subscribe redisChat 1) subscribe 2) redisChat 3) (integer) 1 # 等待读取推送的消息 现在我们先重新开启个 redis 客户端然后在同一个频道 redisChat 发布两次消息订阅者就能接收到消息。 # 发布者发布消息到频道 127.0.0.1:6379 publish redisChat Hello Redis (integer) 1 # 发布者发布消息到频道 127.0.0.1:6379 publish redisChat Hello xhf (integer) 1# 订阅者的客户端会出现以下的消息 1) message # 消息 2) redisChat # 哪个频道的消息 3) Hello Redis # 消息的具体内容 1) message 2) redisChat 3) Hello xhf 2.5 原理 Redis 是使用 C 实现的通过分析 Redis 源码里的 pubsub.c 文件了解发布和订阅机制的底层实现籍此加深对 Redis 的理解。 Redis 通过 PUBLISH 、SUBSCRIBE 和 PSUBSCRIBE 等命令实现发布和订阅功能。 通过 SUBSCRIBE 命令订阅某频道后redis-server 里维护了一个字典字典的键就是一个个 channel而字典的值则是一个链表链表中保存了所有订阅这个 channel 的客户端。SUBSCRIBE 命令的关键就是将客户端添加到给定 channel 的订阅链表中。 通过 PUBLISH 命令向订阅者发送消息redis-server 会使用给定的频道作为键在它所维护的 channel字典中查找记录了订阅这个频道的所有客户端的链表遍历这个链表将消息发布给所有订阅者。 Pub/Sub 从字面上理解就是发布Publish与订阅Subscribe在 Redis 中你可以设定对某一个 key 值进行消息发布及消息订阅当一个 key 值上进行了消息发布后所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统比如普通的即时聊天群聊等功能。 2.6 使用场景 1、Pub/Sub 构建实时消息系统 2、Redis 的 Pub/Sub 系统可以构建实时的消息系统 3、比如很多用 Pub/Sub 构建的实时聊天系统的例子。
http://www.pierceye.com/news/939108/

相关文章:

  • 国外网站注册软件用python做购物网站
  • 网站设计 素材如何攻克房地产网站
  • 上不了国外网站 怎么做贸易网页浏览器设置在哪里
  • delphi可以做网站吗百色建设局网站
  • 网站建设及维护课件免费请人做装修设计上什么网站
  • 川沙网站建设淘客插件wordpress
  • 门户网站开发技术服务合同免费网页游戏源码
  • 网站批量查询工具做影视外包的网站
  • 营销型网站建设试题html5网站网址
  • 网站建设策划书(建设前的市场分析)环球资源网的定位
  • 上海企业都用什么网站网站公司建站
  • 华为云速建站可以做英文网站高端服装产品网站建设
  • 网站建设中html 下载哪个平台做网站比较好
  • 成都网站设计哪家比较好邯郸市空船网络科技有限公司
  • 网站制作类软件推荐南昌网站建设推广专家
  • 做英文兼职的网站四川路桥建设股份有限公司网站
  • 电商网站开发的意义传统营销
  • 怎么自己创建网站或者app足球世界排名
  • 营站快车代理平台跑腿网站开发
  • 免费自助建站系统下载html5手机网站制作
  • 工信部网站怎么查网址邹平县建设局网站
  • 郑州有学网站制作网站背景修改
  • 免费建建网站域名没过期 网站打不开怎么办
  • 单页企业网站模板WordPress社团展示
  • 网站建设需要具备什么条件网站首页新世纪建设集团有限公司
  • 网站怎样做超链接si设计公司
  • 婚恋网站排名前三wordpress首页设置成文章还是页面
  • 制作网站 优帮云一键提交各大收录
  • 网站要怎么做才专业2022电商平台用户排行榜
  • 男男做暧网站免费网站建设期末论文