异常信息

org.redisson.client.RedisException: WRONGTYPE Operation against a key holding the wrong kind of value.

结论

  • 分布式锁使用的key和别的键值对共用了同一个键

为什么这么说呢,写一段junit测试代码,这里RedissonClient配置就不展示了,有兴趣可以自行去了解一下

@RunWith(SpringRunner.class)
@SpringBootTest(classes = AccountServiceApplication.class)
class IScMemberProfitImplServiceTest {@Autowiredprivate RedissonClient redissonClient;@Testvoid testRedisson() {//获取12345678对应的键RBucket<Object> bucket = redissonClient.getBucket("12345678");//获取键对应的值(此时为null)String o1 = (String)bucket.get();//设置同样的keyRLock lock = redissonClient.getLock("12345678");//获取分布式锁,有效期2分钟lock.lock(2, TimeUnit.MINUTES);//测试重入锁//lock.lock(2, TimeUnit.MINUTES);//lock.lock(2, TimeUnit.MINUTES);//设置这个键对应的值为999,有效期为两分钟bucket.set("999",2, TimeUnit.MINUTES);//释放分布式锁if(lock.isLocked()){if(lock.isHeldByCurrentThread()){lock.unlock();}}
}

运行完以上代码,线程在 if(lock.isHeldByCurrentThread()){ 处抛出如题异常,

回看以上代码,在分布式锁获取后,查看redis看到,redis中‘12345678’对应存的hash类型,内容如下

那运行到bucket.set("999",2, TimeUnit.MINUTES); 为什么不会报错呢? 分布式锁存储了hash类型,这不跟String类型冲突了吗

emmm,这要是在mysql确实执行不过去,但对于redis来说,set就意味着直接覆盖,因此,原来存储的不管是什么类型,都会直接覆盖


那为什么执行到if(lock.isHeldByCurrentThread()){ 这里又会报错呢?

额,接着上面所说,由于键 “12345678” 对应的值呗覆盖成了 “999” 字符串,线程执行到此行代码是,判断当前执行的线程是否与redis中存储的线程信息一致,但redis中的值结构已经不再是hash类型,因此会抛出异常

Redisson 使用分布式锁出现 WRONGTYPE Operation against a key holding the wrong kind of value 错误相关推荐

  1. redis出现WRONGTYPE Operation against a key holding the wrong kind of value错误

    操做redis时,想设置一个hash值,出现了WRONGTYPE Operation against a key holding the wrong kind of value 的错误 HashOpe ...

  2. redis redisson 分布式锁 WRONGTYPE Operation against a key holding the wrong kind of value

    在使用redisson加锁的时候报错如下 trylock WRONGTYPE Operation against a key holding the wrong kind of value 错误场景: ...

  3. redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value

    完整报错如下: (Python3.6) appleyuchi@ubuntu19:有序集合$ python example_of_range.py  Traceback (most recent cal ...

  4. Redisson锁解锁时WRONGTYPE Operation against a key holding the wrong kind of value

    WRONGTYPE Operation against a key holding the wrong kind of value. channel: [id: 0x67b19ea8, L:/127. ...

  5. RedisTemplate报错WRONGTYPE Operation against a key holding the wrong kind of value

    场景 今天写业务代码,先从redis中读取值,不存在的话加redis锁,锁定之后再次尝试读取一次redis,没有值的话去db中读取并写redis缓存. 非常简单的代码,确报错WRONGTYPE Ope ...

  6. c# 连接Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value:类型搞混弄出的错误...

    今天用C# 连接Redis做性能测试,用的接口是StackExchange.Redis,按照正常的思路获取数据库连接,代码如下: 1 string conn = "我的ip:6379,pas ...

  7. redis: WRONGTYPE Operation against a key holding the wrong kind of value

    redis: WRONGTYPE Operation against a key holding the wrong kind of value 原因:因为redis中已经存在了相同的key 解决办法 ...

  8. RedisSystemException:WRONGTYPE Operation against a key holding the wrong kind of value

    一.错误提示 我在删除缓存的时候报了这个错:WRONGTYPE Operation against a key holding the wrong kind of value 二.错误含义 针对持有错 ...

  9. Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value;解决办法

    异常收集 原因1: 原因2: 总结:仰天大笑出门去,我辈岂是蓬蒿人 往redis存入Map时出错提示:WRONGTYPE Operation against a key holding the wro ...

最新文章

  1. 先进一站式IP及定制
  2. 【Linux】 Linux简单操作之网络通信和网络访问
  3. 目标跟踪之卡尔曼滤波---理解Kalman滤波的使用
  4. android 学习随笔十二(网络:使用异步HttpClient框架)
  5. 第七阶段 jsp(369---el---jstl)
  6. python数组排序(递归实现)
  7. mysql case函数吗_mySQL case函数
  8. python主线程执行_Python队列 – 最多运行n个线程
  9. 你所能用到的数据结构之番外篇---逆袭的面向对象(一)
  10. 通用软件滤波算法-前序
  11. 使用HttpClient和OkHttp实现模拟登录方正教务系统
  12. Puppeteer + relaxed docker 方案
  13. Js根据域名判断显示不同内容
  14. 机器学习-手写数字识别系统
  15. TStack运维笔记(04)- 配置VPC网络及告警设置
  16. symbian s60 删除模拟器上的程序
  17. html excel 在线查看,web在线查看服务器的Excel文件
  18. “麦田音乐节·超时空歌会”即将破空 探索元宇宙虚拟演唱会新形式
  19. 使用Dozer进行对象copy,某些字段没有被copy的排查
  20. 第一批 00 后 Web3 创业者,和他们的「人间清醒」

热门文章

  1. CSS截字符串,表格英文强制换行
  2. 关于交叉熵(Cross Entropy)与Softmax
  3. mysql delete using,MySQL delete from database where
  4. 深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型
  5. wd移动硬盘插电脑没反应_西部数据移动硬盘插电脑上不显示?
  6. 深入理解JVM一之解析class文件
  7. Matlab符号数学Symbolic Math Toolbox™帮助文档(全)
  8. 团队协助 开源项目_几款研发团队协作工具对比
  9. Lab6 MPEG音频编码实验——C++代码实现
  10. 基于Matlab的缺陷识别检测系统