分布式锁-redission

5、分布式锁-redission

5.1 分布式锁-redission功能介绍

基于setnx实现的分布式锁存在下面的问题:

重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。

不可重试:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。

**超时释放:**我们在加锁时增加了过期时间,这样的我们可以防止死锁,但是如果卡顿的时间超长,虽然我们采用了lua表达式防止删锁的时候,误删别人的锁,但是毕竟没有锁住,有安全隐患

主从一致性: 如果Redis提供了主从集群,当我们向集群写数据时,主机需要异步的将数据同步给从机,而万一在同步过去之前,主机宕机了,就会出现死锁问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么什么是Redission呢

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。

Redission提供了分布式锁的多种多样的功能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

相关推荐

  1. Redission--分布式

    2024-04-15 01:02:04       33 阅读
  2. springboot redission 分布式

    2024-04-15 01:02:04       34 阅读
  3. springboot redission 自定义注解实现分布式

    2024-04-15 01:02:04       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-15 01:02:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-15 01:02:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-15 01:02:04       82 阅读
  4. Python语言-面向对象

    2024-04-15 01:02:04       91 阅读

热门阅读

  1. 启动大模型训练常见的docker参数

    2024-04-15 01:02:04       35 阅读
  2. 支持向量机——SVM

    2024-04-15 01:02:04       36 阅读
  3. python web学习路线

    2024-04-15 01:02:04       36 阅读
  4. 记录一个没测出来,有点严重的Bug

    2024-04-15 01:02:04       28 阅读
  5. pytorch中通道数不一样怎么办?

    2024-04-15 01:02:04       39 阅读
  6. SpringBoot项目中如何使用校验工具

    2024-04-15 01:02:04       37 阅读
  7. 代码随想录-二叉树

    2024-04-15 01:02:04       38 阅读
  8. C++ 中的运算符优先级

    2024-04-15 01:02:04       35 阅读