前言:Redis按理说是应该在LInux环境安装的,为了方便使用,我暂时安装windows版本的redis
windows版本redis的下载地址:
https://github.com/MSOpenTech/redis/releases
来自微软,非redis作者
解压后按住shift+右键==>在此处打开cmd窗口或者直接windows+R进入redis目录后执行:
redis-server.exe redis.windows.conf
窗口关闭redis服务就停止了
此时点击解压目录下的redis-cli.exe 会默认链接到redis下6379端口的服务,在此客户端可以输入redis命令操作redis数据库
redis分布式锁的实现
借助redisson实现非常简单
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.6.5</version>
</dependency>
初始化一个客户端连接
springboot的启动类中加入:
@Bean
public Redisson redisson(){
//此为单机模式
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379").setDatabase(0);
return (Redisson)Redisson.create(config);
}
使用
@Autowired
private Redisson redisson;
关键步骤:
当然其实这样写还是有问题的
在redis的集群模式下还是存在数据不同步的问题,如果主redis宕机,我们加的锁还没来得及同步到从redis的时候宕机,那么redis从服务会变成新的主节点,此时如果高并发场景下再来一个线程,首先检查主redis上有没有加锁,再去新的主redis中查询的时候就没有lockKey,因为还没来得及同步过去,然后就会有问题!