Directorio de artículos
1. Tipos de datos de uso común en Redis
Redis almacena datos en una estructura de par clave-valor, donde la clave es un tipo de cadena y el valor tiene 5 tipos de datos de uso común: cadena, hash, lista, conjunto y conjunto ordenado/zset.
2. Comandos de operación comunes de Redis
1. Comando de cadena
① Establezca el tiempo de vencimiento de la clave: el código de verificación por SMS caducará automáticamente después de un minuto;
② Establezca el valor de la clave cuando la clave no exista: bloqueo distribuido.
2. comando hash
哈希特别适合存储对象!
3. Comando de lista
取出跟存入的顺序一致!
4. Comando de colección
5. Comando de conjunto ordenado
Redis 有序集合是 string 类型元素的集合,且不允许有重复成员,每个元素都会关联一个 double 类型的分数,通过这个分数对集合进行排序!
6. Comandos comunes
3. Operar Redis en Java
1. Importar coordenadas maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. Configurar la fuente de datos de Redis
3. Escribir clase de configuración
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
log.info("开始创建redis模板对象...");
RedisTemplate redisTemplate = new RedisTemplate();
//设置redis的连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置redis key的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}
4. Uso específico en código
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.core.*;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@SpringBootTest
public class SpringDataRedisTest {
@Autowired
private RedisTemplate redisTemplate;
/**
* 通过valueOperations对象就可以操作字符串类型的数据
*/
@Test
public void testRedisTemplate1() {
ValueOperations valueOperations = redisTemplate.opsForValue();
//插入数据
valueOperations.set("name", "栈老师不回家");
//读取数据
String name = (String) valueOperations.get("name");
//设置数据一分钟后过期,自动被清理,这里与redis原命令不同
valueOperations.set("code", "1234", 1, TimeUnit.MINUTES);
//只有当key不存在时设置其value值,这里也与redis命令不同
valueOperations.setIfAbsent("lock", "1");
}
/**
* 操作哈希类型
*/
@Test
public void testRedisTemplate2() {
HashOperations hashOperations = redisTemplate.opsForHash();
//插入数据
hashOperations.put("001", "age", "20");
//读取数据
String age = (String) hashOperations.get("001", "age");
//获得所有的key
Set keys = hashOperations.keys("001");
//获得所有的value
List values = hashOperations.values("001");
//删除一条数据
// hashOperations.delete("001", "age");
}
/**
* 通用命令操作
*/
@Test
public void testRedisTemplate3() {
//查找所有的key
Set keys = redisTemplate.keys("*");
//检查给定key是否存在
Boolean name = redisTemplate.hasKey("name");
//返回key所存储值的数据类型
DataType type = redisTemplate.type("name");
//删除key
// redisTemplate.delete("name");
}
}