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

建设的基本流程网站微信朋友圈广告

建设的基本流程网站,微信朋友圈广告,网站构建建设案例展示,网站首页设计布局背景 项目试用SpringBootredisTemplate执行redis的lua脚本,实现令牌桶;redis结构使用的是1主2从3哨兵模式读写分离; 问题分析 READONLY You cant write against a read报这个错的含义在从节点执行了写操作,也就是说我执行Lua脚…

背景

项目试用SpringBoot+redisTemplate执行redis的lua脚本,实现令牌桶;redis结构使用的是1主2从3哨兵模式+读写分离;

问题分析

READONLY You can't write against a read报这个错的含义在从节点执行了写操作,也就是说我执行Lua脚本是在从节点上执行的,那么问题来了,为什么的我LUA脚本会在从节点执行呢?
我们都知道,redis的主从哨兵模式,再加上配置读写分离,会将读操作优先分配到从节点,也就是说它认为LUA脚本是读操作,看一下具体的报错信息:
在这里插入图片描述
1、我们从这一行开始看起,找找是哪一步给我分配到了从节点

at org.springframework.data.redis.core.script.DefaultScriptExecutor.eval(DefaultScriptExecutor.java:77)

之后一步一步点击调用,到下面这一步,调用了get方法获取前面的返回值,那就继续看前面是怎么调用的,点击RedisScriptingAsyncCommands::evalsha方法继续向下寻找
在这里插入图片描述
2、再继续
在这里插入图片描述
3、再继续,可以看到,命令类型给了一个 EVALSHA
在这里插入图片描述
4、回到第二部看 dispatch 方法的调用,找到处理链接的地方
在这里插入图片描述
5、可以看到write方法中,有一个步骤判断操作类型是读还是写
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6、经过查找,CommandType类中包含 EVALSHA 类型,所以判断为ReadOlny,由此可以验证,确实是使用了从节点执行lua脚本。

解决问题

既然它使用的是从节点,那我就想办法让他在执行脚本的时候,强制选择主节点就能解决问题了呀。
修改redisTemplate注入配置

@Configuration
public class MyRedisConfig {@Value("${spring.redis.sentinel.master}")private String masterName;@Value("${spring.redis.sentinel.nodes}")private String sentinelNodes;@Value("${spring.redis.password}")private String password;@Value("${spring.redis.database}")private Integer database;@Bean(value = "qpsRedisTemplate")public RedisTemplate qpsRedisTemplate() {List<String> sentinels = Arrays.asList(sentinelNodes.split(","));RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration();sentinelConfig.master(masterName);Set<RedisNode> sentinelNodes = new HashSet<>();for (String sentinel : sentinels) {String[] split = sentinel.split(":");sentinelNodes.add(new RedisNode(split[0],Integer.parseInt(split[1])));}sentinelConfig.setSentinels(sentinelNodes);sentinelConfig.setDatabase(database);sentinelConfig.setPassword(password);LettuceConnectionFactory factory = new LettuceConnectionFactory(sentinelConfig);factory.afterPropertiesSet();RedisTemplate redisTemplate = new RedisTemplate<>();redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());redisTemplate.setConnectionFactory(factory);return redisTemplate;}//读写分离配置@Beanpublic LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer(){return clientConfigurationBuilder -> clientConfigurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);}
}
http://www.dtcms.com/wzjs/398938.html

相关文章:

  • 做网站联系电话今日头条官网首页
  • 网站绝对路径301怎么创建网站
  • 辉县网站建设求职简历加强服务保障满足群众急需i
  • 北京网站公司建设可以全部免费观看的软件
  • 上海高登联合建设网站广东seo网站设计
  • 网站建设相关pptseo常用工具
  • 学做川菜最好的网站开发一个app需要多少钱
  • 手机网站整站模板下载工具网站优化策略分析论文
  • 柳州网站虚拟主机公司湖人最新消息
  • 有什么网站可以做运动百度官网认证价格
  • 黑客做的网站好用不俄罗斯搜索引擎yandex推广入口
  • 网站建设定价最新中央人事任免
  • wordpress怎么设置水印seo搜索价格
  • 网站建设 m.ykn.cc销售管理怎么带团队
  • 360客户如何做网站推广百度手机助手免费下载
  • 鄂尔多斯住房和城乡建设局网站南宁优化推广服务
  • 网络公司怎么优化网站今天刚刚的最新新闻
  • 婚纱网站建设 最开始营销做得好的品牌
  • 济南如何挑选网站建设公司营业推广是一种什么样的促销方式
  • 小店网站制作网购网站十大排名
  • 网站建设开发教程视频谷歌浏览器下载官网
  • 如何制造一个网站百度手机助手下载安卓版
  • 漳州做网站含博大选如何做好网络营销
  • 阿里云网站费用吗关键词查网址
  • 网站搭建方案许昌网络推广公司
  • 做废钢推广网站论文收录网站
  • 广州建站服务seo服务外包客服
  • 深圳响应式建站百度直播推广
  • 适用的深圳网站定制开发网站权重划分
  • 广州网站建设费核心关键词是什么意思