package com.sys.util;
import com.jfinal.plugin.redis.Cache;
import com.jfinal.plugin.redis.Redis;
import com.jfinal.plugin.redis.serializer.FstSerializer;
import redis.clients.jedis.Jedis;
import java.util.Collections;
/**
* Created by qyh
*/
public class LockUtils {
/**
* redis分布式锁
* timeoutSecond:轮训获取锁等待时间(秒),0表示不等待锁
* sleepMils:轮训等待,线程sleep时间
* lockTimeSecond:线程设置的锁过期时间,当前时间在此时间之后,其他线程即可获取到锁
* expireSecond:此时间一般要大于lockTimeSecond,作用:expireSecond内没有线程访问,将该key清除redis
*/
public static boolean lock(Cache cache, String key, long timeoutSecond, long lockTimeSecond
, int expireSecond, Long sleepMils) {
boolean lockSuccess = false;
Jedis jedis = cache.getJedis();
try{
long start = System.currentTimeMillis();
byte[] lockKey = FstSerializer.me.keyToBytes(key);
do{
redis分布式锁
最新推荐文章于 2024-08-13 14:41:03 发布
本文深入探讨了如何使用Redis作为分布式锁的实现方案,详细解释了Redis分布式锁的工作原理、加锁与释放锁的策略,以及在Java环境中如何进行操作。内容涵盖了公平锁与非公平锁的概念,并讨论了死锁的预防和解决方法。
摘要由CSDN通过智能技术生成