【记录一个问题】redis中执行事务出现错误“EXECABORT Transaction discarded because of previous errors”
2024-09-06 02:21:24
执行事务的大致代码如下:
redisClient := GetRedisClient()
pipe := redisClient.TxPipeline()
err := pipe.ZAdd(k, arrZ...).Result()
//...
arr, err := pipe.Exec()
if err != nil {
log.Println(err, arr) //这里打印错误 EXECABORT Transaction discarded because of previous errors
}
陆续排除了以下可能:
- 是不是redis的内存满了
- 是不是redis服务器保存了个什么状态
- 是不是因为竞争太激烈,所以出错
改了一行代码后,错误不一样了:
pipe := redisClient.Pipeline() //使用批量的管道,但是不使用事务
错误变为:ERR wrong number of arguments for 'zadd' command
认真看看,原来是特定条件下, arrZ这个数组可能会为空。
修改为:
redisClient := GetRedisClient()
pipe := redisClient.TxPipeline()
if len(arrZ)>0{
err := pipe.ZAdd(k, arrZ...).Result()
}
//...
arr, err := pipe.Exec()
if err != nil {
log.Println(err, arr)
}
问题解决。根本上还是命令参数错误导致的,但是事务模式下给出了错误的提示。
最新文章
- asp.net mvc 绑定客户端post过来的复杂JSON数据
- Python第一天 - 迭代
- cetos6.5安装Tomcat
- poj2367 拓扑序
- 基于ThinkPHP框架的简单的后台管理系统
- KMP算法的Next数组详解(转)
- 【原版的】Redis事件驱动内核
- nginx做反向负载均衡,后端服务器获取真实客户端ip
- struts2整合JFreechart 饼图、折线图、柱形图
- P1772 [ZJOI2006]物流运输
- Cordova与现有框架的结合,Cordova插件使用教程,Cordova自定义插件,框架集成Cordova,将Cordova集成到现有框架中
- js有哪些变态的语法?
- Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】
- 使用composer遇到的问题及解决方法
- flex布局 响应式布局
- 一个讲课截屏 清明DAY2
- 【Web】Sublime Text 3 安装+注册+汉化
- linux下的c++filt 命令
- 枚举类型内部函数 enumerate
- 获取设备信息——获取客户端ip地址和mac地址
热门文章
- CF157A Game Outcome 题解
- Python第二周 str的方法
- Java面向对象~类和对象&;方法,类方法
- Mysql 主从复制机制
- WinFrm中多线程操作窗体属性
- Error: Not found: 'package:json_annotation/json_annotation.dart'
- ACwing1212. 地宫取宝
- JAVA获取指定日期是星期几
- IDEA启动报错:Error:java: Compilation failed: internal java compiler error
- 在制造业的工业2.0中应用MOM系统