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

建材做哪些网站好重庆经典论坛新闻评论

建材做哪些网站好,重庆经典论坛新闻评论,网站标题和关键词有什么区别,以什么主题做网站好Redis 7.2.0 搭建和集群配置 一.Redis 下载与单机部署1.Redis 下载2.虚拟机配置3.Redis 单机源码安装和测试4.Java 单机连接测试1.Pom 依赖2.配置文件3.启动类4.配置类5.单元测试6.测试结果 二.Redis 集群部署1.主从1.从节点配置2.Java 测试 2.哨兵1.哨兵节点配置2.复制一个哨兵… Redis 7.2.0 搭建和集群配置 一.Redis 下载与单机部署1.Redis 下载2.虚拟机配置3.Redis 单机源码安装和测试4.Java 单机连接测试1.Pom 依赖2.配置文件3.启动类4.配置类5.单元测试6.测试结果 二.Redis 集群部署1.主从1.从节点配置2.Java 测试 2.哨兵1.哨兵节点配置2.复制一个哨兵节点双哨兵3.Java 测试访问哨兵 3.集群1.集群配置文件修改2.Java 访问 Redis 集群测试 一.Redis 下载与单机部署 1.Redis 下载 Redis 官网 2.虚拟机配置 ## 1.关闭防火墙 systemctl stop firewalld systemctl disable firewalld systemctl status firewalld ## 2.配置域名解析 echo 192.168.1.103 rd1 /etc/hosts echo 192.168.1.104 rd2 /etc/hosts echo 192.168.1.105 rd3 /etc/hosts echo 192.168.1.106 rd4 /etc/hosts echo 192.168.1.107 rd5 /etc/hosts echo 192.168.1.108 rd6 /etc/hosts关闭并禁用防火墙 3.Redis 单机源码安装和测试 ## 1.解压缩 tar zxvf redis-7.2.0.tar.gz ## 2.进入源码安装目录 cd /home/redis-7.2.0/src/ ## 3.编译和安装 make make install PREFIX/usr/local/redis ## 4.进入Redis解压目录 cd /home/redis-7.2.0/ ## 5.修改配置 vim redis.conf ## 6.启动服务 /usr/local/redis/bin/redis-server redis.conf ## 7.停止服务 kill -9 ps aux |grep redis|grep -v grep | awk {print $2}以下行号仅供参考增加配置后会有微小变动 行号原值新值含义87bind 127.0.0.1 -::1bind 0.0.0.0 -::1绑定地址111protected-mode yes#protected-mode no防火墙保护533replicaof replicaof rd1 6379配置主节点主从同步541masterauth masterauth 123456配置主节点密码主从同步535requirepass 123456密码在空行添加 哨兵配置可在配置哨兵模式时参考 行号原值新值含义92sentinel monitor sentinel monitor mymaster 192.168.1.103 6379 1哨兵初始监控的主机地址112sentinel auth-pass mymaster MySUPER–secret-0123passw0rdsentinel auth-pass mymaster 123456哨兵配置主节点密码保持所有节点密码一致避免重新选取主节点后连接失败170requirepass requirepass 456789哨兵密码 服务启动 连接测试 连接 4.Java 单机连接测试 1.Pom 依赖 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdredis-demo/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source20/maven.compiler.sourcemaven.compiler.target20/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion3.1.2/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactIdversion3.1.2/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactIdversion2.11.1/version/dependency!-- 测试类 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdversion3.1.2/version/dependency/dependencies /project2.配置文件 spring:data:redis:host: 192.168.1.103port: 6379password: 1234563.启动类 package org.example;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;/*** author zhuwd moon* Description* create 2023-08-22 22:28*/ SpringBootApplication public class RedisApp {public static void main(String[] args) {SpringApplication.run(RedisApp.class,args);} } 4.配置类 package org.example.config;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.stereotype.Component;/*** author zhuwd moon* Description* create 2023-08-22 22:29*/ Component public class RedisConfig {private RedisConnectionFactory redisConnectionFactory;Autowiredpublic void setRedisConnectionFactory(RedisConnectionFactory redisConnectionFactory) {this.redisConnectionFactory redisConnectionFactory;}Bean(name redisTemplate)public RedisTemplateString, Object redisTemplate(){RedisTemplateString, Object redisTemplate new RedisTemplate();// 序列化keyredisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new StringRedisSerializer());// 序列化hashredisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new StringRedisSerializer());// 连接redis数据库redisTemplate.setConnectionFactory(redisConnectionFactory);return redisTemplate;} }5.单元测试 import org.example.RedisApp; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.test.context.junit4.SpringRunner;/*** author zhuwd moon* Description* create 2023-08-22 22:29*/ RunWith(SpringRunner.class) SpringBootTest(classes RedisApp.class) public class TestApp {AutowiredRedisTemplateString, Object redisTemplate;Testpublic void test(){redisTemplate.opsForValue().set(test,haha);} } 6.测试结果 查看值 二.Redis 集群部署 集群信息 HostIPrd1192.168.1.103rd2192.168.1.104rd3192.168.1.105rd4192.168.1.106rd5192.168.1.107rd6192.168.1.108 ## 1.将修改后的配置文件复制到安装目录 cp /home/redis-7.2.0/redis.conf /usr/local/redis/1.主从 1.从节点配置 ## 1.将 Redis 包拷贝到 rd2 / rd3 scp -r /usr/local/redis rootrd2:/usr/local/redis scp -r /usr/local/redis rootrd3:/usr/local/redis ## 2.修改 rd2 / rd3 上 redis.conf 配置增加主节点信息 replicaof rd1 6379 / masterauth 123456 vi /usr/local/redis/redis.conf ## 3.依次启动 rd1 rd2 rd3 /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf ## 4.客户端连接 /usr/local/redis/bin/redis-cli ## 5.认证 auth 123456Redis 安装包复制 增加主节点配置 主节点启动信息 从节点启动信息 查看主从信息 2.Java 测试 通过上面测试代码写入主节点 主从模式故障不支持自动恢复需要人为处理从节点读需要手动写读取代码 2.哨兵 1.哨兵节点配置 ## 1.复制 redis 包到 rd4 scp -r /usr/local/redis rootrd4:/usr/local/redis ## 2.拷贝 sentinel 配置文件 scp -r /home/redis-7.2.0/sentinel.conf rootrd4:/usr/local/redis/ ## 3.修改哨兵配置 # sentinel monitor master-redis-name master-redis-ip master-redis-port quorum # quorum 表示当有多少个 sentinel 认为一个 master 失效时才算真正失效取值参考 sentinels/2 1 vi /usr/local/redis/sentinel.conf ## 将 92 行修改为 sentinel monitor mymaster 192.168.1.103 6379 1 ## 在 112 行增加 sentinel auth-pass mymaster 123456 ## 在 170 行增加 requirepass 123456 ## 4.启动哨兵 /usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel.conf ## 5.查看信息 /usr/local/redis/bin/redis-cli -p 26379 127.0.0.1:26379 info修改配置 哨兵启动信息注意端口为 26379 查看哨兵信息 2.复制一个哨兵节点双哨兵 ## 1.停止所有节点 kill -9 ps aux |grep redis|grep -v grep | awk {print $2} ## 2.创建日志目录 mkdir -p logfile /var/log/redis ## 3.修改配置文件 增加日志输出 大概 355 行 vi /usr/local/redis/redis.conf vi /usr/local/redis/sentinel.conf ## 增加 logfile /var/log/redis/redis.log ## 增加 logfile /var/log/redis/sentinel.log ## 4.复制配置好的哨兵文件到 rd5 scp -r /usr/local/redis rootrd5:/usr/local/redis ## 5.启动 rd1 / rd2 / rd3 /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf ## 6.启动 rd4 / rd5 的哨兵 /usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel.conf 3.Java 测试访问哨兵 配置文件 spring:data:redis:password: 123456 # 访问主从节点的密码sentinel:master: mymasternodes: 192.168.1.106:26379,192.168.1.107:26379password: 123456 # 访问哨兵的密码lettuce:pool:max-idle: 50min-idle: 10max-active: 100max-wait: 1000logging:level:root: infoio.lettuce.core: debugorg.springframework.data.redis: debug 配置类 package org.example.config;import io.lettuce.core.ReadFrom; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisClusterConfiguration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisSentinelConfiguration; import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.stereotype.Component;import java.time.Duration; import java.util.HashSet;/*** author zhuwd moon* Description* create 2023-08-22 22:29*/ Component public class RedisConfig {/*** 配置 Redis 工厂* param properties* return*/Bean(name redisConnectionFactory)public RedisConnectionFactory redisConnectionFactory(RedisProperties properties) {//取配置RedisProperties.Cluster cluster properties.getCluster();RedisProperties.Sentinel sentinel properties.getSentinel();RedisProperties.Pool pool properties.getLettuce().getPool();//池化配置LettucePoolingClientConfiguration poolingClientConfiguration LettucePoolingClientConfiguration.builder().readFrom(ReadFrom.ANY_REPLICA).build();if (null ! pool){if (pool.getMaxIdle() 0){poolingClientConfiguration.getPoolConfig().setMaxIdle(pool.getMaxIdle());}if (pool.getMinIdle() 0){poolingClientConfiguration.getPoolConfig().setMinIdle(pool.getMinIdle());}if (pool.getMaxActive() 0){poolingClientConfiguration.getPoolConfig().setMaxTotal(pool.getMaxActive());}if (pool.getMaxWait().compareTo(Duration.ZERO) 0){poolingClientConfiguration.getPoolConfig().setMaxWait(pool.getMaxWait());}}//Redis 配置if (null ! cluster){//集群RedisClusterConfiguration clusterConfiguration new RedisClusterConfiguration(cluster.getNodes());if (null ! properties.getPassword()){clusterConfiguration.setPassword(properties.getPassword());}if (null ! cluster.getMaxRedirects()){clusterConfiguration.setMaxRedirects(cluster.getMaxRedirects());}return new LettuceConnectionFactory(clusterConfiguration,poolingClientConfiguration);} else if (null ! sentinel){//哨兵RedisSentinelConfiguration sentinelConfiguration new RedisSentinelConfiguration(sentinel.getMaster(),new HashSet(sentinel.getNodes()));sentinelConfiguration.setSentinelPassword(sentinel.getPassword());sentinelConfiguration.setPassword(properties.getPassword());//设置从节点读return new LettuceConnectionFactory(sentinelConfiguration,poolingClientConfiguration);} else {//单机RedisStandaloneConfiguration config new RedisStandaloneConfiguration();config.setHostName(properties.getHost());config.setPort(properties.getPort());config.setPassword(properties.getPassword());return new LettuceConnectionFactory(config);}}/*** redis 配置* param redisConnectionFactory* return*/Bean(name redisTemplate)public RedisTemplateString, Object redisTemplate(Qualifier(redisConnectionFactory) RedisConnectionFactory redisConnectionFactory){RedisTemplateString, Object redisTemplate new RedisTemplate();// 序列化keyredisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new StringRedisSerializer());// 序列化hashredisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new StringRedisSerializer());// 连接redis数据库redisTemplate.setConnectionFactory(redisConnectionFactory);return redisTemplate;}} 启动类 package org.example;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;/*** author zhuwd moon* Description* create 2023-08-22 22:28*/ SpringBootApplication public class RedisApp {public static void main(String[] args) {SpringApplication.run(RedisApp.class,args);} } 测试类 package org.example.controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** author zhuwd moon* Description* create 2023-08-23 20:13*/ RequestMapping(/redis) RestController public class RedisTest {AutowiredRedisTemplateString, Object redisTemplate;GetMapping(/write)public void write(String key,String val){redisTemplate.opsForValue().set(key,val);}GetMapping(/read)public void read(String key){System.out.println(redisTemplate.opsForValue().get(key));} } 查看主节点/usr/local/redis/bin/redis-cli -p 26379 启动服务 测试写集群127.0.0.1:8080/redis/write?keytestvalhello 写节点rd3 读数据rd2 杀掉主节点并等待kill -9 ps aux |grep redis|grep -v grep | awk {print $2} 查看 rd4 哨兵主节点切为 rd2 查看 rd5 哨兵主节点 写测试127.0.0.1:8080/redis/write?keytestvalreHello 读测试127.0.0.1:8080/redis/read?keytest 恢复 rd5 服务/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf 通过 rd1 查看从节点信息 3.集群 清除之前测试写入的数据 查找持久化文件find / -type f -name dump.rdb 如果存在也删掉 1.集群配置文件修改 ## 1.在 rd1 复制配置文件 cp /home/redis-7.2.0/redis.conf /usr/local/redis/redis-cluster.conf ## 2.编辑 vim /usr/local/redis/redis-cluster.conf ## 设置密码 requirepass 123456 ## 关闭保护模式 protected-mode no ## 开启集群 cluster-enabled yes 约1586行 ## 设置配置文件 cluster-config-file redis-cluster.conf 约1594行 ## 设置超时 cluster-node-timeout 15000 约1600行 ## 设置主节点密码 masterauth 123456 ## 设置日志 logfile /var/log/redis/redis-cluster.log ## 3.将 redis-cluster.conf 分发到 rd2 / rd3 / rd4 / rd5 / rd6 scp /usr/local/redis/redis-cluster.conf rootrd2:/usr/local/redis/ scp /usr/local/redis/redis-cluster.conf rootrd3:/usr/local/redis/ scp /usr/local/redis/redis-cluster.conf rootrd4:/usr/local/redis/ scp /usr/local/redis/redis-cluster.conf rootrd5:/usr/local/redis/ scp /usr/local/redis/redis-cluster.conf rootrd6:/usr/local/redis/ ## 4.依次启动 rd1 / rd2 /rd3 /rd4 /rd5 / rd6 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster.conf ## 5.清空已有数据 ## 5.创建集群 在任一节点执行 ## -a 密码认证若没写密码无效带这个参数 ## --cluster create 创建集群实例列表 IP:PORT IP:PORT IP:PORT IP:PORT IP:PORT IP:PORT ## --cluster-replicas 复制因子1即每个主节点需2个从节点 /usr/local/redis/bin/redis-cli -a 123456 --cluster create --cluster-replicas 1 192.168.1.103:6379 192.168.1.104:6379 192.168.1.105:6379 192.168.1.106:6379 192.168.1.107:6379 192.168.1.108:6379 启动所有节点服务 创建集群集群至少要三个主节点 查看集群信息和集群节点 新建三台虚拟机 HostIPrd7192.168.1.109rd8192.168.1.110rd9192.168.1.111 ## 1.新建三台虚拟机并分发配置 rd7 / rd8 /rd9 scp -r /usr/local/redis root192.168.1.109:/usr/local/ scp -r /usr/local/redis root192.168.1.110:/usr/local/ scp -r /usr/local/redis root192.168.1.111:/usr/local/ ## 2.创建日志目录 / 关闭防火墙并禁用 mkdir -p /var/log/redis systemctl stop firewalld systemctl disable firewalld ## 3.启动 rd7 / rd8 /rd9 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster.conf ## 4.将新节点添加到当前集群 在 rd1 执行 ## -a 密码认证若没写密码无效带这个参数 ## --cluster add-node 创建集群实例列表 IP:PORT IP:PORT IP:PORT IP:PORT IP:PORT IP:PORT ## 要有一个节点为当前集群的节点 ## /usr/local/redis/bin/redis-cli -a 123456 --cluster add-node 192.168.1.109:6379 192.168.1.110:6379 192.168.1.111:6379 192.168.1.103:6379查看集群命令说明/usr/local/redis/bin/redis-cli --cluster help ## 添加主节点 /usr/local/redis/bin/redis-cli -a 123456 --cluster add-node 192.168.1.109:6379 192.168.1.103:6379 ## 如果 slot 分配不均可以用如下命令修复集群 ## 分配不均报错如下 [ERR] Not all 16384 slots are covered by nodes. /usr/local/redis/bin/redis-cli -a 123456 --cluster fix 192.168.1.103:6379 ## 执行 resharding 指令来为它分配 hash slots ## 执行下面命令后要依次设置移动 slot 的节点 ID 源节点列表可直接用 all /usr/local/redis/bin/redis-cli -a 123456 --cluster reshard 192.168.1.103:6379添加主节点并查看结果部分截图 查看主从节点状态/usr/local/redis/bin/redis-cli -a 123456 --cluster check 192.168.1.103:6379 | grep ‘M|S’ ## 随机添加从节点优先添加到从节点少的节点下 /usr/local/redis/bin/redis-cli -a 123456 --cluster add-node 192.168.1.110:6379 192.168.1.103:6379 --cluster-slave ## 添加到指定主节点下添加到 103 即 rd1 下面 /usr/local/redis/bin/redis-cli -a 123456 --cluster add-node 192.168.1.111:6379 192.168.1.103:6379 --cluster-slave --cluster-master-id 9e99c815e3660680439261573c5c5b382573cf1c随机添加 查看主从节点状态/usr/local/redis/bin/redis-cli -a 123456 --cluster check 192.168.1.103:6379 2.Java 访问 Redis 集群测试 配置集群主节点 spring:data:redis:password: 123456 # 访问主从节点的密码cluster:max-redirects: 10nodes: 192.168.1.103:6379,192.168.1.105:6379,192.168.1.108:6379,192.168.1.109:6379lettuce:pool:max-idle: 50min-idle: 10max-active: 100max-wait: 1000enabled: truelogging:level:root: infoio.lettuce.core: debugorg.springframework.data.redis: debug 修改插入方法计算 SLOT package org.example.controller;import io.lettuce.core.codec.CRC16; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** author zhuwd moon* Description* create 2023-08-23 20:13*/ RestController RequestMapping(/redis) public class RedisTest {AutowiredRedisTemplateString, Object redisTemplate;private static final int SLOT_S 16384;GetMapping(/write)public void write(String key,String val){int slot CRC16.crc16(key.getBytes())%SLOT_S;redisTemplate.opsForValue().set(key,val);System.out.println(slot slot key key val val);}GetMapping(/read)public void read(String key){System.out.println(redisTemplate.opsForValue().get(key));} } 测试插入数据127.0.0.1:8080/redis/write?keytestvalreHello 查看日志插入主节点为 rd3【192.168.1.105】槽号为 6918 读数据127.0.0.1:8080/redis/read?keytest 从节点 192.168.1.104 为 rd2查看其是否为 rd3 从节点/usr/local/redis/bin/redis-cli -a 123456 --cluster check 192.168.1.103:6379 客户端查看数据 查看集群槽号 12376 属于 103 节点 rd1 插入 Key 测试其节点127.0.0.1:8080/redis/write?keyRedisTJXYval12376 查看客户端数据
http://www.tj-hxxt.cn/news/136732.html

相关文章:

  • 网站建设的功能有哪些在网站上做漂浮
  • 网站站点地图网站特色栏目重要性
  • 如何建立自己公司的官方网站wordpress 头像 很慢
  • 免费com域名注册网站聊城专业网站制作公司
  • 深圳宝安p2p网站系统的建设天津制作企业网站报价
  • 安徽省和住房建设厅网站河北建设厅网站开通账号
  • 企业建设网站的目的是什么免费
  • 一个网站的构建TP5.1做的网站首页被挂马原因
  • 佛山企业网站建设中国建设银行网站查询
  • 卖磁铁的网站怎么做长沙优化科技有限公司地址
  • 微网站开发 在线商城打广告专用配图
  • a站网址是什么网店运营实训报告总结
  • 成都建设厅官方网站清苑住房和城乡建设局网站
  • 网站建设与维护实训总结网站数据库空间
  • 建设视频网站链接百度云盘伍佰亿网站系统
  • 建设公关型的企业网站有哪些百度热议怎么上首页
  • 网站宽度一般是多少深圳石岩做网站的公司
  • 做网站 怎么赚钱吗网站单页推广
  • 无锡h5网站建设十大软件免费下载安装手机版
  • 一个网站多个域名十堰电商网站建设
  • 企业网站系统功能分析与设计店铺推广方式有哪些
  • 保健品网站可以做网站资源网站平台建设方案
  • 中国建设银行网站包头分行乐清网络
  • 用360打开自己做的网站有广告seo 新老网站替换 域名不变
  • 做网站如何选择数据源百度网站下拉怎么做
  • 帮助中心网站怎么做seo是什么意思呢
  • 网站开发中的视图页面指的是什么广东手机版建站系统开发
  • 网站域名跳转怎么弄自己开发企业管理系统
  • 荥阳郑州网站建设开发公司截留占用住宅专项维修资金
  • 用织梦做领券网站软文兼职10元一篇