Selección de cliente Redis: Jedis, lechuga, Redisson
La selección de clientes del departamento de I + D es relativamente amplia y arbitraria, y las ramas dependientes no están unificadas. Siento que Baidu usa uno directamente, o tiene una función para cumplir con los cambios, sin considerarlo. el uso de otros grupos y el mantenimiento centralizado.
Además, si es el componente básico del andamio pom de la empresa, es necesario considerar si se unifica en una o varias coexistencias. Ahora hay dos consideraciones: si el problema de rendimiento no es importante, se recomienda unificarlos e integrarlos en uno solo; si se requieren múltiples convivencias, al menos no puede haber más de 2 clientes.
2. Comparación
Los únicos clientes Java recomendados oficialmente son Jedis, Lettuce y Redisson, por lo que este análisis solo se centra en estos tres.
2.1. Descripción general
Jedis: implementación Java del cliente Redis, que proporciona soporte más completo para los comandos de Redis.
lettuce: Lettuce es un cliente Redis escalable y seguro para subprocesos adecuado para uso sincrónico, asincrónico y reactivo. Varios subprocesos pueden compartir una conexión si se evitan las operaciones de bloqueo y transaccionales (como BLPOP y MULTI/EXEC). La lechuga se construye con netty. Admite funciones avanzadas de Redis como Sentinel, Cluster, Pipelining, Auto-Reconnect y modelo de datos de Redis.
Redisson: Redisson es una cuadrícula de datos de memoria Java implementada sobre la base de Redis.
Redisson: Redisson es una cuadrícula de datos de memoria Java implementada sobre la base de Redis. ) No solo proporciona una serie de objetos Java distribuidos comunes, sino que también proporciona algunos servicios distribuidos. Estos servicios incluyen (BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch. Redisson proporciona la forma más fácil y conveniente de usar Redis. Redisson está diseñado para facilitar " "Separación de preocupaciones", para que los usuarios puedan centrarse más en la lógica empresarial
Lechuga: consulte directamente el sitio web oficial: /detail.html?id=9108
Los resultados de las pruebas anteriores. son más antiguos, no pude encontrar resultados de pruebas de rendimiento para los tres**** con el mismo participante
No se realizaron pruebas comparativas de rendimiento en los tres, principalmente debido a ajustes sin propósito ni objetivo (simultaneidad, volumen de datos , rango de tamaño de kv de instrucción), por lo que es difícil realizar pruebas comparativas cuantitativas y comparables (principalmente porque soy vago)
2.3 Funcionalidad
Jedis: Sí, el comando nativo de redis. soporte más completo, pero la encapsulación de la capa superior es débil, el soporte para funciones de clúster es muy bajo y casi no hay funciones avanzadas.
Letuce: cliente redis avanzado, admite varios modos de conexión redis. operaciones, casi sin funciones avanzadas
Redisson: cliente redis avanzado, admite múltiples modos de operación y conexión de redis y proporciona una gran cantidad de utilidades
Jedis y lechuga tienen pocas funciones. La operación es simple e incluso el bloqueo distribuido debe implementarlo usted mismo, así que hablemos primero de las funciones avanzadas de Redisson y, de vez en cuando, compárelas con Jedis y Lettuce.
1. Más de una docena de codificaciones. métodos.
Redisson proporciona diferentes codificaciones de alto nivel para objetos clave y objetos de valor basados en objetos de operación:
JsonJacksonCodec, AvroJacksonCodec, SmileJacksonCodec, CborJacksonCodec, MsgPackJacksonCodec, IonJacksonCodec, KryoCodec, SerializationCodec, FstCodec, LZ4Codec, SnappyCodec, CompositeCodec
y cuatro métodos de codificación básicos:
JsonJacksonMapCodec, StringCodec, LongCodec, ByteArrayCodec
La operación Jedis solo apunta a matrices de bytes, letuce admite ByteArrayCodec , StringCodec, CipherCodec y CompressionCodec.
Codificación bajo demanda, sin comparación de métodos de codificación.
2. Colección distribuida.
Divida y distribuya uniformemente colecciones grandes en cada nodo. Las colecciones incluyen Set, Map, BitSet, Bloom Filter, Spring Cache y Hibernate Cache, y admiten el almacenamiento en caché local. (Disponible solo en Professional Edition) Candados distribuidos.
Varios bloqueos distribuidos: ReentrantLock, FairLock, MultiLock, RedLock, ReadWriteLock, Semaphore, PermitExpirableSemaphore, CounterCountDownLock y CounterCountDownLock.
3. RPC
4. Servicio de tareas programadas distribuidas
5. MR distribuido
6. Soporte para objetos multidimensionales complejos Estructura y referencias de objetos
7. También se admite la lechuga de canalización en racimo
.
jedis no es compatible, jedis ni siquiera admite operaciones de múltiples claves (distribuidas en diferentes nodos).
8. Transacciones
Proporciona una implementación del estándar de transacciones XA que se puede integrar en Spring. (Solo disponible en Professional Edition)
9. Herramientas de administración de clústeres
(Solo disponible en Professional Edition)
10. Limitador
Herramienta de limitación de tráfico distribuido (con función de tiempo de espera).
11. Autodetección/ID distribuida
12.BloomFilter
13. Cola de retardo
2.4.lettuce en comparación con Jedis It se caracteriza por la seguridad asincrónica y de subprocesos. La capa inferior es netty killer como capa de comunicación, y su rendimiento es mejor que el grupo de conexiones + inseguro de subprocesos de Jedis.
Redisson supera a los otros dos con sus potentes funciones y su diseño orientado a objetos.
Según nuestras necesidades empresariales:
1. Limitación de corriente
2. Bloqueo distribuido
3. Almacenamiento en caché
4.Generación de GID
5. Cola de retardo
6. Script Lua
7. Solicitud de fusión
Redisson puede satisfacer todo estos requisitos, y usar Redisson como cliente Spring es suficiente.
Personalmente prefiero lechuga + Redisson.