Red de conocimiento informático - Problemas con los teléfonos móviles - Cinco tipos de objetos de Redis

Cinco tipos de objetos de Redis

Anteriormente presentamos las seis estructuras de datos de Redis: SDS, lista enlazada de doble extremo, diccionario, lista de salto, lista comprimida y conjunto de enteros.

Redis crea un sistema de objetos basado en estas estructuras de datos, que incluye cinco tipos principales de objetos: objetos de cadena, objetos de lista, objetos hash, objetos de conjunto y objetos de conjunto ordenado.

Definición de objeto:

Cada tipo de objeto tiene implementadas al menos dos codificaciones (estructuras de datos) diferentes.

Nuestro punto principal es que, dado que los objetos tienen diferentes tipos, algunos comandos se pueden usar en diferentes objetos, como GET, TTL, EXPIRE, etc., mientras que algunos comandos solo se pueden usar en tipos específicos.

Los comandos para un tipo específico primero verificarán el campo redisObject.type para verificar el tipo específico.

Estos comandos para tipos comunes se implementan mediante polimorfismo de tipos. Es decir, se utilizan diferentes métodos en diferentes tipos de objetos para implementar comandos, y cuando se utilizan comandos, solo es necesario determinar qué función utilizar para realizar la operación según el tipo de objeto. Esto es polimorfismo.

Los objetos de tipo refcount tienen un campo refcount que cuenta 1 cada vez que se hace referencia al objeto y -1 cada vez que se desreferencia el objeto. Esta es una forma de recuperar memoria en el momento adecuado. Este es el método de conteo de referencias para el reciclaje de memoria.

De forma predeterminada, Redis disfrutará de datos numéricos del 0 al 9999. Es decir, sólo hay un objeto de este tipo en la memoria y usted simplemente lo señala en diferentes ubicaciones de uso.

Pregunta: ¿Por qué Redis solo disfruta de objetos con valores enteros?

Respuesta: Cuando se utiliza un objeto disfrutado, debe verificar si el objeto es el mismo que el objeto disfrutado. Cuanto más complejos sean los datos, mayor será la complejidad. . La validación de valores enteros es O(1); la validación de cadenas es O(N); la validación de objetos con múltiples valores, como listas o hashes, es O(N?). Este límite es para ahorrar CPU.

La propiedad redisObject.lru registra la hora del último acceso. Puede ver cuándo se accedió al elemento utilizando el comando OBJECT IDLETIME xxx (curTime - lru), que no actualiza lru.