Redis教程

redisson分布式锁

本文主要是介绍redisson分布式锁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Redisson

具有内存中数据网格功能的Redis Java客户端
基于高性能的异步和无锁Java Redis客户端和Netty框架。
 1.可重入锁,A调用B。AB都需要同一锁,此时可重入锁就可以重入,A就可以调用B。不可重入锁时,A调用B将死锁
 2.读写锁:写锁是一个排它锁(互斥锁),读写是共享锁,写锁没释放读就必须等待,读锁没释放写锁也需等待
 3.闭锁:当所有线程锁都走完了以后,可以使用分布式闭锁机制
 4.信号量:可以用来做分布式限流操作
 5.缓存数据一致性的问题:
            双写模式:写数据库后,写缓存       问题:并发时,2写进入,写完DB后都写缓存。有暂时的脏数据
            失效模式:写完数据库后,删缓存     问题:还没存入数据库呢,线程2又读到旧的DB了
            解决方法:缓存设置过期时间,定期更新,写数据写时,加分布式的读写锁。

1.添加依赖

	<dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson</artifactId>
        <version>3.12.0</version>
    </dependency>

2.添加配置

	@Configuration
	public class MyRedissonConfig {
	
	    /**
	     * 所有对Redisson的使用都是通过RedissonClient
	     * @return
	     * @throws IOException
	     */
	    @Bean(destroyMethod="shutdown")
	    public RedissonClient redisson() throws IOException {
	        //1、创建配置
	        Config config = new Config();
	        config.useSingleServer().setAddress("redis://192.168.77.130:6379");
	
	        //2、根据Config创建出RedissonClient实例
	        //Redis url should start with redis:// or rediss://
	        RedissonClient redissonClient = Redisson.create(config);
	        return redissonClient;
	    }
	
	}
这篇关于redisson分布式锁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!