Todos sabemos que Redis admite 5 tipos de datos:
- cadena cadena de caracteres (puede ser un número entero, punto flotante y cadena de caracteres, denominados colectivamente elementos)
- hash (la clave del hash debe ser única)
- lista lista (implementar la cola, el elemento no es único, el principio de primero en entrar, primero en salir)
- colección de conjuntos (diferentes elementos)
- zset (conjunto ordenado) conjunto ordenado
En mi proyecto real, solo usé el tipo String. Dado que el tipo string es binario seguro, significa que puede contener cualquier dato (objetos serializados e imágenes jpg). ¿Crees que el tipo String es suficiente?
Volviendo al tema, a continuación implementaré el almacenamiento de cada tipo de datos.
Cuerda
Visión general
- String es el tipo más básico de redis. Puedes entenderlo exactamente como el mismo tipo que Memcached. Una clave corresponde a un valor.
- El tipo de cadena es binario seguro. Esto significa que la cadena redis puede contener cualquier dato. Como imágenes jpg u objetos serializados.
- El tipo de cadena es el tipo de datos más básico de Redis y el valor del tipo de cadena puede almacenar hasta 512 MB.
ejemplo:
jedis.set("test", "123");// 保存key为test,value为123的数据
jedis.get("test"); // 查看key为test的数据
Picadillo
Visión general
- El hash de Redis es una colección de pares clave-valor (clave => valor).
- El hash de Redis es una tabla de mapeo entre el campo y el valor del tipo de cadena, y el hash es particularmente adecuado para almacenar objetos.
ejemplo:
jedis.hset("test1","map1","value1");// 保存一个redis的key为test1,map的key为map1,value为value1的数据
jedis.hget("test1","map1"); // 获取redis下key为test1中map的key为map1的值
Lista
Visión general
- La lista de Redis es una lista simple de cadenas, ordenadas en el orden de inserción. Puede agregar un elemento al principio (izquierda) o al final (derecha) de la lista.
ejemplo
jedis.lpush("test2","1");
jedis.lpush("test2","2");
String pop1 = jedis.lpop("test2");// 输出"2"
String pop2 = jedis.lpop("test2");// 输出"1" // 说明是先进后出
jedis.lpush("test2","1");
jedis.lpush("test2","2");
List<String> tests2 = jedis.lrange("test2", 0, -1);// ["2","1"]
colocar
Visión general
- El conjunto de Redis es una colección desordenada de tipo cadena.
- La colección se implementa a través de una tabla hash, por lo que la complejidad de agregar, eliminar y buscar es O (1).
comando sadd
Agregue un elemento de cadena al conjunto correspondiente a la clave y devuelva 1 si tiene éxito, y devuelva 0 si el elemento ya está en el conjunto.
ejemplo
// set类型
jedis.sadd("test3","1","4","2");
Set<String> test3 = jedis.smembers("test3");// 查看集合列表
Long test31 = jedis.scard("test3");// 查看集合有多少条记录
zset (conjunto ordenado)
Visión general
- Redis zset, como set, también es una colección de elementos de tipo cadena y no se permiten miembros duplicados.
- La diferencia es que cada elemento está asociado con una puntuación de tipo doble. Redis usa puntajes para ordenar los miembros del conjunto de pequeños a grandes.
- Los miembros de zset son únicos, pero la puntuación (puntuación) se puede repetir.
ejemplo
// 保存一个key为test4的值,按score排序,默认从小到大排序
jedis.zadd("test4",1.0,"你好");
jedis.zadd("test4",3.0,"你好3");
jedis.zadd("test4",2.0,"你好2");
Set<String> test4 = jedis.zrange("test4", 0, -1);