详解Redis 分布式锁遇到的序列化问题
场景描述最近使用 Redis 遇到了一个类似分布式锁的场景,跟 Redis 实现分布式锁类比一下,就是释放锁失败,也就是缓存删不掉。又踩了一个 Redis 的坑……加锁说到加锁这里的逻辑,代码里有两种实现方式:示例代码一示例代码二其实它们的区别就在于前者使用了 RedisTemplate,而后者使用的是 StringRedisTemplate。测试一下使用两种方式分别加锁,其中:lock01 为 k1 和 v1,lock02 为 k2 和 v2。可以看到 v1 是有双引号的,而 v2 没有。而 RedisTemplate 的 key 使用 StringRedisSerializer,value 使用的是 Jackson2JsonRedisSerializer 序列化。小结本文遇到的这个问题,主要是因为使用了不同的 RedisTemplate 来加锁和释放锁,而这两个 template 使用了不同的序列化方式,最终还是序列化带来的问题。
用户评论