El tutorial de Redisson más fácil de la historia.

¡Continúe creando, acelere el crecimiento! Este es el día 20 de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de octubre", haga clic para ver los detalles del evento

introducir

Redisson es una cuadrícula de datos en memoria de Java basada en Redis . Aprovecha al máximo una serie de ventajas proporcionadas por la base de datos clave-valor de Redis y proporciona a los usuarios una serie de clases de herramientas comunes con características distribuidas basadas en las interfaces comunes en el kit de herramientas de utilidades de Java. El conjunto de herramientas utilizado originalmente para coordinar programas concurrentes de subprocesos múltiples de una sola máquina ha adquirido la capacidad de coordinar sistemas concurrentes distribuidos de subprocesos múltiples y de máquinas múltiples, lo que reduce en gran medida la dificultad de diseñar y desarrollar sistemas distribuidos a gran escala. Al mismo tiempo, la combinación de varios servicios distribuidos con ricas características simplifica aún más la cooperación entre programas en un entorno distribuido.

Redisson adopta el marco Netty basado en NIO , que no solo puede servir como el cliente de controlador subyacente de Redis, sino que también proporciona la función de conexión de varias formas de configuración de Redis. Los comandos de Redis se pueden enviar de forma síncrona, asíncrona , secuencial o canalización asíncrona. La función de envío , el procesamiento de ejecución del script LUA y la función de procesamiento del resultado devuelto también se integran en un esquema de aplicación más avanzado sobre esta base, que no solo encapsula Redis nativo Hash, List, Set, String, Geoy HyperLogLogotras estructuras de datos en los más familiares los que están en Java. 映射(Map), 列表(List), 集(Set), , 通用对象桶(Object Bucket), 地理空间对象桶(Geospatial Bucket), 基数估计算法(HyperLogLog)etc. estructura, sobre esta base, también proporciona 多值映射(Multimap), 本地缓存映射(LocalCachedMap), 有序集(SortedSet), 计分排序集(ScoredSortedSet), 字典排序集(LexSortedSet), 列队(Queue), 阻塞队列(Blocking Queue), , , , , , , , , , , , , , , , , 有界阻塞列队(Bounded Blocking Queue), 双端队列(Deque), 阻塞双端列队(Blocking Deque), 阻塞公平列队(Blocking Fair Queue), , 延迟列队(Delayed Queue), , 布隆过滤器(Bloom Filter), etc. 原子整长形(AtomicLong), 原子双精度浮点数(AtomicDouble)y BitSetotras estructuras de datos distribuidas que Redis no tenía originalmente. No solo eso, Redisson también implementa bloqueos distribuidos como se menciona en la documentación de RedisLockTales escenarios de aplicación de alto nivel. De hecho, Redisson no se detiene allí, sobre la base de bloqueos distribuidos, también proporciona 联锁(MultiLock), 读写锁(ReadWriteLock), 公平锁(Fair Lock), 红锁(RedLock), 信号量(Semaphore)y estos componentes básicos que son esenciales 可过期性信号量(PermitExpirableSemaphore)para 闭锁(CountDownLatch)las aplicaciones de alta concurrencia de subprocesos múltiples en la práctica. Es a través de la realización de soluciones de aplicaciones de alto nivel basadas en Redis que Redisson se convierte en una herramienta importante para construir sistemas distribuidos.

Pasos para el uso

1. Introducir el paquete de frascos

<dependency>
  <groupId>org.redisson</groupId>
  <artifactId>redisson</artifactId>
  <version>2.7.0</version>
</dependency> 
复制代码

2. Configuración

public class RedissonManager {
    private static Config config = new Config();
    //声明redisso对象
    private static Redisson redisson = null;
   //实例化redisson
 static{
​
     config.useSingleServer().setAddress("127.0.0.1:6379");
          //得到redisson对象
        redisson = (Redisson) Redisson.create(config);
​
}
​
 //获取redisson对象的方法
    public static Redisson getRedisson(){
        return redisson;
    }
}
复制代码

3. Adquisición y liberación de bloqueo

public class DistributedRedisLock {
   //从配置类中获取redisson对象
    private static Redisson redisson = RedissonManager.getRedisson();
    private static final String LOCK_TITLE = "redisLock_";
   //加锁
    public static boolean acquire(String lockName){
       //声明key对象
        String key = LOCK_TITLE + lockName;
       //获取锁对象
        RLock mylock = redisson.getLock(key);
       //加锁,并且设置锁过期时间,防止死锁的产生
        mylock.lock(2, TimeUnit.MINUTES); 
        System.err.println("======lock======"+Thread.currentThread().getName());
       //加锁成功
        return  true;
    }
  //锁的释放
    public static void release(String lockName){
       //必须是和加锁时的同一个key
        String key = LOCK_TITLE + lockName;
       //获取所对象
        RLock mylock = redisson.getLock(key);
      //释放锁(解锁)
        mylock.unlock();
        System.err.println("======unlock======"+Thread.currentThread().getName());
    }
}
复制代码

Bienvenidos a dar me gusta y comentar, gracias chicos ヾ(◍°∇°◍)ノ゙

Supongo que te gusta

Origin juejin.im/post/7158256053350744095
Recomendado
Clasificación