目录
一、Redisson读写锁实现:
二、中间件实现数据一致
三、其他
一、Redisson读写锁实现:
一次只有一个线程可以占用写模式,实现读写锁保证数据一致。
1. 初始化一个RedissonClient 客户端
@Bean public RedissonClient redissonClient(){ Config config = new Config(); config.useSingleServer().setAddress("redis://127.0.0.1:6379"); return Redisson.create(config); }
2. 创建读取请求,创建读取锁
@GetMapping("read") public String read(){ RReadWriteLock readWriteLock = redissonClient.getReadWriteLock(RedisConstant.READ_WRITE_LOCK); //创建读锁,读锁的作用就是等待该lockkey释放写锁以后再读 RLock rLock = readWriteLock.readLock(); try { rLock.lock(); //读取redis里面uuid String uuid = redisTemplate.opsForValue().get("uuid"); return uuid; }finally { rLock.unlock(); } }
3. 创建写入请求,创建写锁
@GetMapping("write") public String write() throws InterruptedException { RReadWriteLock readWriteLock = redissonClient.getReadWriteLock(RedisConstant.READ_WRITE_LOCK); //创建写锁,写锁加锁成功,读锁只能等待 RLock rLock = readWriteLock.writeLock(); String res = ""; try { rLock.lock(); res = UUID.randomUUID().toString(); //生成的uuid写入redis redisTemplate.opsForValue().set("uuid",res); }finally { //无条件释放锁,避免阻塞 rLock.unlock(); } return res; }二、中间件实现数据一致 三、其他
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)