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

一键制作网站php招生网站开发

一键制作网站,php招生网站开发,网站页面如何设计图,手机怎么做微电影网站吗1. 做三个节点的redis集群。 1、编辑redis节点node0(10.0.0.100)、node1(10.0.0.110)、node2(10.0.0.120)的安装脚本 [rootnode0 ~]# vim install_redis.sh#!/bin/bash # 指定脚本解释器为bashREDIS_VERSIONredis-7.2.7 # 定义Redis的版本号PASSWORD123456 # 设置Redis的访问…1. 做三个节点的redis集群。 1、编辑redis节点node0(10.0.0.100)、node1(10.0.0.110)、node2(10.0.0.120)的安装脚本 [rootnode0 ~]# vim install_redis.sh#!/bin/bash # 指定脚本解释器为bashREDIS_VERSIONredis-7.2.7 # 定义Redis的版本号PASSWORD123456 # 设置Redis的访问密码INSTALL_DIR/apps/redis # 指定Redis的安装目录CPUS$(lscpu | awk /^CPU\(s\)/{print $2}) # 获取CPU核心数量用于编译时的并行处理. /etc/os-release # 加载系统发行版信息color () {# 定义一个函数用于输出彩色文本信息RES_COL60MOVE_TO_COLecho -en \\033[${RES_COL}GSETCOLOR_SUCCESSecho -en \\033[1;32mSETCOLOR_FAILUREecho -en \\033[1;31mSETCOLOR_WARNINGecho -en \\033[1;33mSETCOLOR_NORMALecho -en \E[0mecho -n $1 $MOVE_TO_COLecho -n [if [ $2 success -o $2 0 ] ;then${SETCOLOR_SUCCESS}echo -n $ OK elif [ $2 failure -o $2 1 ] ;then ${SETCOLOR_FAILURE}echo -n $FAILEDelse${SETCOLOR_WARNING}echo -n $WARNINGfi${SETCOLOR_NORMAL}echo -n ]echo }prepare(){# 准备安装环境安装Redis编译所需的依赖包if [ $ID centos -o $ID rocky ];thenyum -y install gcc make jemalloc-devel systemd-develelseapt update apt -y install gcc make libjemalloc-dev libsystemd-devfiif [ $? -eq 0 ];thencolor 安装软件包成功 0elsecolor 安装软件包失败请检查网络配置 1exitfi }install() {# 安装Redisif [ ! -f ${REDIS_VERSION}.tar.gz ]; then# 如果Redis源码包不存在则下载wget http://download.redis.io/releases/${REDIS_VERSION}.tar.gz || { color Redis 源码下载失败 1; exit; }fitar xf ${REDIS_VERSION}.tar.gz -C /usr/local/src# 解压源码包到/usr/local/srccd /usr/local/src/${REDIS_VERSION}# 进入解压后的目录make -j $CPUS USE_SYSTEMDyes PREFIX${INSTALL_DIR} install color Redis 编译安装完成 0 || { color Redis 编译安装失败 1; exit; }# 编译并安装Redis使用CPU核心数量加速编译ln -s ${INSTALL_DIR}/bin/redis-* /usr/local/bin/# 创建Redis命令的软链接到/usr/local/binmkdir -p ${INSTALL_DIR}/{etc,log,data,run}# 创建Redis所需的目录结构cp redis.conf ${INSTALL_DIR}/etc/# 复制Redis配置文件到安装目录的etc子目录sed -i -e s/bind 127.0.0.1/bind 0.0.0.0/ \-e /# requirepass/a requirepass $PASSWORD \-e /^dir .*/c dir ${INSTALL_DIR}/data/ \-e /logfile .*/c logfile ${INSTALL_DIR}/log/redis-6379.log \-e /^pidfile .*/c pidfile ${INSTALL_DIR}/run/redis_6379.pid ${INSTALL_DIR}/etc/redis.conf# 修改Redis配置文件设置密码、数据目录、日志文件和PID文件路径if id redis /dev/null; thencolor Redis 用户已存在 1elseuseradd -r -s /sbin/nologin rediscolor Redis 用户创建成功 0fi# 检查Redis用户是否存在不存在则创建chown -R redis.redis ${INSTALL_DIR}# 更改Redis安装目录的拥有者为redis用户cat /etc/sysctl.conf EOF net.core.somaxconn 1024 vm.overcommit_memory 1 EOFsysctl -p# 修改系统内核参数并应用if [ $ID centos -o $ID rocky ]; thenecho echo never /sys/kernel/mm/transparent_hugepage/enabled /etc/rc.d/rc.localchmod x /etc/rc.d/rc.local/etc/rc.d/rc.localelseecho -e #!/bin/bash\necho never /sys/kernel/mm/transparent_hugepage/enabled /etc/rc.localchmod x /etc/rc.local/etc/rc.localfi# 禁用透明大页根据系统类型选择不同的方法cat /lib/systemd/system/redis.service EOF [Unit] DescriptionRedis persistent key-value database Afternetwork.target[Service] ExecStart${INSTALL_DIR}/bin/redis-server ${INSTALL_DIR}/etc/redis.conf --supervised systemd ExecStop/bin/kill -s QUIT \$MAINPID Typenotify Userredis Groupredis RuntimeDirectoryredis RuntimeDirectoryMode0755 LimitNOFILE1000000[Install] WantedBymulti-user.target EOF# 创建Redis的systemd服务文件systemctl daemon-reloadsystemctl enable --now redis /dev/null# 重新加载systemd配置并启用Redis服务if [ $? -eq 0 ]; thencolor Redis 服务启动成功,Redis信息如下: 0elsecolor Redis 启动失败 1exitfi# 检查Redis服务是否启动成功并输出相应信息sleep 2redis-cli -a $PASSWORD INFO Server 2 /dev/null# 等待2秒然后使用redis-cli获取Redis服务器信息 }prepare # 调用prepare函数准备环境install # 调用install函数安装Redis 2、构建redis节点node0(10.0.0.100)、node1(10.0.0.101)、node2(10.0.0.102)的集群。 [rootnode0 ~]# bash install_redis.sh # 执行install_redis.sh脚本以安装Redis[rootnode0 ~]# sed -i.bak -e /masterauth/a masterauth 123456 -e /# cluster-enabled yes/a cluster-enabled yes -e /# cluster-config-file nodes-6379.conf/a cluster-config-file nodes-6379.conf -e /cluster-require-full-coverage yes/a cluster-require-full-coverage no /apps/redis/etc/redis.conf # 使用sed命令修改Redis配置文件启用密码认证、集群模式等[rootnode0 ~]# systemctl restart redis # 重启Redis服务以应用配置更改# 以下命令用于在其他节点上复制脚本、安装Redis并配置集群模式 [rootnode1 ~]# scp install_redis.sh 10.0.0.110:/root # 将脚本复制到node1 [rootnode2 ~]# scp install_redis.sh 10.0.0.120:/root # 将脚本复制到node2[rootnode1 ~]# bash install_redis.sh # 在node1上执行脚本安装Redis [rootnode1 ~]# sed -i.bak -e /masterauth/a masterauth 123456 -e /# cluster-enabled yes/a cluster-enabled yes -e /# cluster-config-file nodes-6379.conf/a cluster-config-file nodes-6379.conf -e /cluster-require-full-coverage yes/a cluster-require-full-coverage no /apps/redis/etc/redis.conf # 修改node1上的Redis配置 [rootnode1 ~]# systemctl restart redis # 重启node1上的Redis服务[rootnode2 ~]# bash install_redis.sh # 在node2上执行脚本安装Redis [rootnode2 ~]# sed -i.bak -e /masterauth/a masterauth 123456 -e /# cluster-enabled yes/a cluster-enabled yes -e /# cluster-config-file nodes-6379.conf/a cluster-config-file nodes-6379.conf -e /cluster-require-full-coverage yes/a cluster-require-full-coverage no /apps/redis/etc/redis.conf # 修改node2上的Redis配置 [rootnode2 ~]# systemctl restart redis # 重启node2上的Redis服务[rootnode0 ~]# redis-cli -a 123456 --cluster create 10.0.0.100:6379 10.0.0.110:6379 10.0.0.120:6379 # 使用redis-cli命令创建Redis集群包含node0、node1和node2上的Redis实例 Warning: Using a password with -a or -u option on the command line interface may not be safe.Performing hash slots allocation on 3 nodes... Master[0] - Slots 0 - 5460 Master[1] - Slots 5461 - 10922 Master[2] - Slots 10923 - 16383 M: 6a1fcf17824b5b05000d222d4f5fc54f5eb95ba3 10.0.0.100:6379slots:[0-5460] (5461 slots) master M: f54c4e03dd0e6d6c64804a0645d28a17012ffe16 10.0.0.110:6379slots:[5461-10922] (5462 slots) master M: 4c2d7e08d91d439b00f7d692269afc8073bd1597 10.0.0.120:6379slots:[10923-16383] (5461 slots) master Can I set the above configuration? (type yes to accept): yesNodes configuration updatedAssign a different config epoch to each nodeSending CLUSTER MEET messages to join the cluster Waiting for the cluster to join Performing Cluster Check (using node 10.0.0.100:6379) M: 6a1fcf17824b5b05000d222d4f5fc54f5eb95ba3 10.0.0.100:6379slots:[0-5460] (5461 slots) master M: 4c2d7e08d91d439b00f7d692269afc8073bd1597 10.0.0.120:6379slots:[10923-16383] (5461 slots) master M: f54c4e03dd0e6d6c64804a0645d28a17012ffe16 10.0.0.110:6379slots:[5461-10922] (5462 slots) master [OK] All nodes agree about slots configuration.Check for open slots...Check slots coverage... [OK] All 16384 slots covered. [rootnode0 ~]#redis-cli -a 123456 -c INFO replication Warning: Using a password with -a or -u option on the command line interface may not be safe. # Replication role:master connected_slaves:0 master_failover_state:no-failover master_replid:4f5c6acc29267a7c0abb5d99683fbb122b77c816 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0[rootnode1 ~]#redis-cli -a 123456 -c INFO replication Warning: Using a password with -a or -u option on the command line interface may not be safe. # Replication role:master connected_slaves:0 master_failover_state:no-failover master_replid:273975d582c1f2dcce034819de2d425e085c550c master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0[rootnode2 ~]#redis-cli -a 123456 -c INFO replication Warning: Using a password with -a or -u option on the command line interface may not be safe. # Replication role:master connected_slaves:0 master_failover_state:no-failover master_replid:0e495f096ccffdace37cd7c452c3f6c5db44e69e master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 2. 总结redis持久化的两种方式和原理 Redis 持久化是将内存数据存储到硬盘防止服务器宕机导致数据丢失的机制主要提供 RDB 和 AOF 两种方式 一、RDB 持久化 原理 1、快照式持久化在特定时间点生成内存数据的二进制快照RDB 文件默认 dump.rdb通过 rdbSave 函数将数据序列化写入文件。重启时通过 rdbLoad 函数加载数据到内存。 2、触发机制 - 手动触发          SAVE阻塞主线程生成快照影响服务。          BGSAVE后台 fork 子进程生成快照不阻塞主线程。 - 自动触发通过配置文件 save seconds changes 设置条件如 save 900 1 表示 900 秒内至少 1 次修改触发。 优缺点 优点         文件紧凑二进制压缩加载速度快适合备份与灾难恢复。 缺点         数据可能丢失两次快照间的修改未持久化。         大数据量时 fork 子进程可能占用较多内存影响性能。 二、AOF 持久化 原理 - 命令追加式持久化记录所有写操作命令到文本文件默认 appendonly.aof重启时重放命令恢复数据。 - 写回策略通过 appendfsync 配置          always每次写操作同步写入磁盘数据最安全但性能最低。          everysec默认每秒批量同步平衡安全与性能最多丢失 1 秒数据。          no依赖操作系统同步性能最高但数据风险最大。 - 文件重写          目的压缩冗余命令如多次 set 同一键生成更小的新 AOF 文件。          实现后台异步执行不影响主线程处理新命令。 优缺点 优点         数据安全性高可配置实时/准实时持久化。         文件可读性强支持手动修复或恢复误操作。 缺点         文件体积较大恢复速度慢于 RDB。         高并发写入时可能影响性能尤其是 always 模式。 三、总结 对比项RDBAOF数据安全性可能丢失部分数据更高依赖策略文件大小小二进制压缩大文本记录命令恢复速度快直接加载内存快照慢逐条执行命令性能影响fork 子进程可能占用内存频繁写入可能增加 I/O 压力 实际应用建议 高安全性场景启用 AOFeverysec 模式。快速恢复场景启用 RDB。综合方案同时开启 RDB AOFRDB 用于定期备份AOF 保障实时数据安全。 3.从内核事件原理层面阐述为什么redis这么快 Redis的极致性能来源于多个层面的协同优化尤其在内核事件处理机制上表现突出。从内核事件原理层面来看主要归因于以下几个关键因素 一、内存存储内核访问的物理基础 Redis 将数据存储在内存中内存的直接访问速度是磁盘的 10^5~10^6 倍避免了磁盘 I/O 的阻塞问题。 内核与内存协作 内核通过页缓存Page Cache和直接内存映射mmap机制管理内存Redis无需频繁与磁盘交互所有操作均在用户态内存中完成减少了系统调用和上下文切换次数。 零拷贝优化 当 Redis 响应客户端请求时数据从内存直接写入内核的套接字缓冲区Socket Buffer通过sendfile或writev系统调用实现零拷贝传输减少数据在内核态与用户态之间的复制开销。 二、单线程模型与事件驱动内核事件的高效调度 Redis 采用 单线程 Reactor 模式结合 I/O 多路复用技术最大化利用内核的事件通知机制。 I/O 多路复用的内核实现 使用 epollLinux或 kqueueBSD监听所有客户端连接的套接字。 当某个套接字就绪可读/可写时内核通过事件回调通知 Redis 主线程触发对应的文件事件处理器。 优势 水平触发LT确保事件不丢失适合 Redis 的请求处理模式。 边缘触发ET减少重复通知提升效率。 单线程的优势 零锁竞争无需处理多线程的锁同步问题避免死锁和上下文切换开销。 无阻塞操作所有操作命令执行、响应发送均非阻塞主线程专注于事件循环。 事件循环aeEventLoop 核心流程 通过 epoll_wait 监听就绪事件。 将事件分发给对应的处理器如命令请求处理器、命令回复处理器。 处理完所有就绪事件后检查时间事件如定时任务。 优先级策略优先处理文件事件用户请求确保实时性。 三、高效数据结构减少内核交互开销 Redis 的数据结构设计以内存高效访问和低系统调用频率为目标 SDS简单动态字符串 预分配内存空间减少 malloc 系统调用次数。 记录字符串长度避免遍历计算长度O(1) 时间复杂度。 跳表Skip List 多层索引结构加速范围查询减少遍历次数。 内存连续访问模式提升 CPU 缓存命中率。 压缩列表ZipList 紧凑内存布局减少内存碎片和缺页中断Page Fault概率。 四、持久化机制内核的异步协作 Redis 通过fork子进程实现 RDB 和 AOF 持久化利用内核的写时复制Copy-On-Write机制 RDB 快照 子进程通过fork创建共享父进程内存页。 内核在父进程修改内存时触发写时复制子进程独立持久化数据避免阻塞主线程。 AOF 日志 主线程将命令追加到内核缓冲区子进程异步刷盘通过 fsync 控制同步策略如 everysec 平衡性能与安全。 五、通信协议内核缓冲区的批量处理 Redis 使用 RESP 协议通过批量数据格式减少网络传输次数 批量数据格式将多个命令或响应合并传输减少 read/write 系统调用次数。 内核缓冲区优化 客户端请求和响应数据先写入内核缓冲区由内核异步完成网络传输避免主线程阻塞。 通过TCP_CORK 或 Nagle 算法合并小包减少网络报文数量。 优化维度内核事件原理的体现性能收益内存存储避免磁盘 I/O 阻塞依赖内核页缓存和零拷贝技术读写延迟低至微秒级单线程与事件驱动基于 epoll 的事件通知机制无锁无上下文切换单线程吞吐量达 10W QPS数据结构减少内存碎片和系统调用提升 CPU 缓存命中率复杂操作如范围查询效率高持久化子进程与写时复制COW机制避免主线程阻塞持久化过程对服务影响极小通信协议批量数据格式 内核缓冲区异步传输网络传输效率高延迟波动小 综上所述Redis之所以能够在性能上表现出色主要得益于其基于内存的存储设计、单线程模型与事件驱动机制、高效的数据结构设计、持久化机制以及高效的通信协议等多个方面的优势。Redis 通过内核事件机制的高效调度结合内存存储、单线程模型和数据结构优化在高并发、低延迟、高吞吐场景下表现卓越成为内存数据库的标杆。
http://www.hkea.cn/news/14299350/

相关文章:

  • 网站上传服务器教程网店代运营就是个坑
  • 南京电信网站空间扩容小程序开发需要多少钱知乎
  • 东莞南城网站建设价格洛阳网站建设启辰网络
  • 自己做黑彩网站外贸网站销售方式
  • 7天精通网站建设实录网站群建设方案.doc
  • 个人博客网站制作搭建宁波seo网络推广公司
  • 厦门外贸网站建设公众号软文范例100
  • 网站开发类合同百度百科怎么创建自己
  • 湖北省建设安全管理协会网站泸州住院证明图片在线制作
  • 网站开发问题及解决网页制作教程视频
  • 男女做爰全过程网站南阳建站公司
  • 唐山中小企业网站制作没广告的视频播放器app
  • 高淳城乡建设局网站免备案wordpress主机空间
  • 青岛黄岛网站建设公司电话搜房网
  • 什么网站好建设h5互动的网站
  • 静态网站公用头部如何调用标题婚庆公司起名字大全免费
  • 移动网站开发教材开发工具在哪里
  • 搭建个网站需要多少钱整形网站优化
  • 钢管网站建设湖南定制响应式网站有哪些
  • 网站设计模板怎么使用湖南电商平台网站建设
  • 鞍山网站设计制作网站网络营销渠道的功能有
  • 河南网站建设工作室和县建设局网站
  • 上海专业网站建设网站今天出入苏州最新通知
  • 网站快速排名技巧房地产开发商是干什么的
  • 怎么做网站内容公司网站运营维护单位
  • 建网站 可以看到访客吗昆山建设招标信息网站
  • 深圳品牌医疗网站建设新浪微博网站建设
  • 安康网站建设智能小程序wordpress 源码讲解
  • 网站推广 济南高校二级网站建设要求
  • 字牌标识公司网站网站编号 6019湖北雨水最新消息