Java Redis

本文详细探讨了在微服务架构中使用Redis实现分布式锁的方法,包括加锁和解锁的正确实现,以及两个常见的实现错误。文章强调了锁的互斥性、避免死锁、容错性和同一客户端加解锁的重要性,并提供了错误代码示例以说明问题所在。
摘要由CSDN通过智能技术生成

前言
在微服务的架构设计之下,很多场景都会使用到Redis的分布式锁来实现服务可靠性
目的为了保证服务的可用我们要满足最少以下4个条件:
1.互斥性,任何一个时刻只能有一个客户端持有锁2.杜绝死锁,当一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3.容错性,只要有一个redis节点是正常的就不会存在不能加解锁的情况4.加锁解锁要是同一个客户端,不能有其他人把锁解了

实现错误代码1
[Java] 纯文本查看 复制代码
?
public class RedisTool { 
private static final String LOCK_SUCCESS = "OK"; 
private static final String SET_IF_NOT_EXIST = "NX"; 
private static final String SET_WITH_EXPIRE_TIME = "PX"; 

/** * 尝试获取分布式锁 
* @param jedis Redis客户端 
* @param lockKey 锁 
* @param requestId 请求标识
* @param expireTime 超期时间 
* @return 是否获取成功 
*/
public static boolean tryGetDistributedLock(Jedis jedis, String lockKey, String requestId, int expireTime) { 
String result = jedis.set(lockKey, requestId, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, expireTime); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中如何使用Redis? 回答: 在Java中使用Redis需要借助RedisJava客户端。Redis官方提供了一些Java客户端,比如Jedis和Lettuce等,这些客户端都是基于Redis协议实现的,可以通过Java语言来访问和操作Redis数据库。其中,Jedis是Redis官方推荐的面向Java的操作Redis的客户端,可以通过JedisPool来获得连接进行get、set、del等操作。另外,SpringDataRedis中也提供了对JedisApi的高度封装,可以使用RedisTemplate来操作Redis数据库。除了Jedis,还有其他的Java客户端可以用于访问Redis,比如Lettuce、Redisson等,它们也提供了比较完善的Redis操作API,可以根据自己的需要选择使用。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Java应用:关于Redis入门的详细解析](https://blog.csdn.net/ww2651071028/article/details/129436598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Java中使用Redis](https://blog.csdn.net/jintianzheng/article/details/115624412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值