Redis puede almacenar la asignación entre las teclas y 5 diferentes tipos de estructuras de datos, estos cinco tipos de estructuras de datos son String (cadena), la lista (lista), el conjunto (set), el hash (hash) y zConfigurar (ordenada colección)
Cadena puede ser una cadena, número entero o de coma flotante para toda la cadena o cadenas en el que parte de la realización de la operación, y un incremento de destino de ejecución de coma flotante (incremento) o decremento (Disminuir)
Lista A lista enlazada, cada nodo en la lista contiene un empuje o un elemento de pop-up en los extremos de cadena de la lista; lista de acuerdo con el ajuste de desviación (TRIM); Lee una sola o una pluralidad de elementos; El valor Encuentra o eliminar elementos
Estableció que comprende un colector cadena aleatoria (unorderedcollection), y cada cadena está contenida es único, diferente Add, Obtener, eliminar los elementos individuales; comprobación de si hay un elemento en un conjunto; calculando intersección, unión, diferencia, llegar a lucir de la colección de elementos aleatorios
tabla hash de hash contiene pares de valores clave no ordenadas para agregar, obtener, quitar un solo pares de valores clave, obtener todos los pares de valores clave
ZConfigurar mapeo entre el miembro ordenado cadena (miembro) y la puntuación de punto flotante (Score), se añaden los elementos en el orden determinado por la puntuación de tamaño, la adquisición, borrar un solo elemento; de acuerdo con el rango de valores (rango) o miembros Obtiene el elemento
Nota: Java Bean para serializar
1. Dependencia de las importaciones
// Gradle
grupo de compilación: 'org.springframework.boot', nombre: 'primavera-boot-starter-Data-Redis', versión: '2.1.3.RELEASE'
// pom
<Dependency>
<GroupId> org.springframework.boot </ groupId>
<> ArtifactId primavera-boot-arrancadores de datos Redis </ artifactId>
<Versión> 2.1.3.RELEASE </ version>
</ Dependency>
1
2
3
4
5
6
7
8
9
2. Configurar Redis
redis.config
@Configuración
public class {RedisConfig
// se utiliza para resolver el problema, entonces los Redis operativos secuencia de anotación
@Bean (name = "myCacheManager")
pública CacheManager cacheManager (RedisConnectionFactory redisConnectionFactory) {
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter (redisConnectionFactory);
RedisSerializer <Objeto> jsonSerializer = nuevo GenericJackson2JsonRedisSerializer ();
RedisSerializationContext.SerializationPair <Objeto> par = RedisSerializationContext.SerializationPair
.fromSerializer(jsonSerializer);
RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig ()
.serializeValuesWith (par);
defaultCacheConfig.entryTtl (Duration.ofMinutes (30));
volver nueva RedisCacheManager (redisCacheWriter, defaultCacheConfig);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
/ **
* Resuelve el problema con la secuencia de operaciones redisTemplate
*
* @Param RedisConnectionFactory fábrica
* @Return redisTemplate
* /
@Frijol
@ConditionalOnMissingBean (name = "redisTemplate")
pública RedisTemplate <String, Object> redisTemplate (fábrica RedisConnectionFactory) {
// Configurar redisTemplate
RedisTemplate <String, Object> redisTemplate = new RedisTemplate <> ();
redisTemplate.setConnectionFactory (de fábrica);
// serialización clave
redisTemplate.setKeySerializer (STRING_SERIALIZER);
// valor de serialización
redisTemplate.setValueSerializer (JACKSON__SERIALIZER);
// clave serialización Hash
redisTemplate.setHashKeySerializer (STRING_SERIALIZER);
// valor Hash serialización
redisTemplate.setHashValueSerializer (JACKSON__SERIALIZER);
redisTemplate.afterPropertiesSet ();
volver redisTemplate;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
configuración de clase de inicio
@EnableCaching // operación de caché permite la anotación
@SpringBootApplication
ShoppingMallApplication public class {
public static void Main (args String []) {
SpringApplication.run (ShoppingMallApplication.class, args);
}
}
1
2
3
4
5
6
7
arreglo application.yml
#redis caché de configuración
repetir:
base de datos: 0
host: @ip
Puerto: 6379
Tiempo de espera: 8000
# Si no hay tiempo para escribir
contraseña:
jedis:
piscina:
# Conexión de piscina número máximo de conexiones
max-activo: 10
# Piscina tiempo máximo de bloqueo de conexión
max-espera: -1
# Las conexiones inactivas mínimo de agrupación de conexiones
min-inactivo: 0
# conexiones inactivas máxima de conexión de la piscina
max-reposo: 8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
3. comentario introducción caché
El resultado de la operación de la caché método, más tarde a los mismos datos, cacheNames de acceso y clave directamente desde la memoria caché debe rellenar, si no llena la clave, clave por defecto es el nombre del método actual, ya que los diferentes métodos se actualizan cuando se actualiza el caché fracaso
valor: especifica el nombre de memoria caché puede especificar una pluralidad (array)
clave: datos de la caché clave que se utilizan para los parámetros del método por defecto apoyan SPEL
keygenerator: generador de claves
CacheManager: Especifica el administrador de caché, o para obtener un programa de análisis, tanto de segunda elección
condición: la condición especificada caché
a menos que: Negativa a menos caché cuando la condición es verdadera, no se almacenará en caché el valor de retorno, los resultados de discriminación pueden ser adquiridas.
sync: si asíncrono no son compatibles a menos
@Cacheable (cacheNames = "xxx", key = "xxx")
1
Ambos métodos son invocados para actualizar un dato caché modificar la base de datos durante la actualización de la memoria caché, primero llama al método de destino estará dirigido a métodos en caché, a la atención de cambios, y la clave para consultar al mismo tiempo, de lo contrario el caché no se actualiza, la propiedad y @Cacheable mismo
@CachePut (cacheNames = "xxx", key = "xxx")
1
Borrar la caché
allEntries: Eliminar todos los campos almacenados en caché
beforeInvocation: si antes de que el método
@CacheEvict (cacheNames = "XXX", clave = "xxx")
1
@CacheConfig
Puede especificar la estrategia de generación de clave pública
cacheNames Pública (valor) se puede escribir en una clase unificada anteriormente no cubren todos los caché en un nombre todavía
CacheManager pública
@CacheConfig (cacheNames = "producto")
ProductInfoController public class {
@Caching (cacheable = {} @Cacheable, puesto = {} @CachePut)
pública de respuesta <Map <String, Object >> buyProduct () {
// Para ello sthing
}
}
1
2
3
4
5
6
7
8
Key se puede establecer en un método parámetro dinámico (apoyo EL)
@Cacheable (cacheNames = "xxx", key = "#openid")
pública ResultVO <OrderDTO> detalle (@RequestParam ( "OpenID") Cadena OpenID) {
// hacer sthing
}
1
2
3
4
compuesto comentario
Ir a actualizar los datos en la caché cuando los datos de la consulta //
Zhengzhou hospital de la infertilidad: http: //www.zzchyy110.com/
@Caching (cacheable = {} @Cacheable, puesto = {} @CachePut)
@Caching (cacheable = {@Cacheable}, put = {@CachePut}, evict = {@CacheEvict})
1
2
4. Prueba
Notas de versión:
@CacheConfig (cacheNames = "-ProductInfo comercial") // nombre personalizado
ProductInfoController public class {
// uso sencillo
@Caching (cacheable = {} @Cacheable, puesto = {} @CachePut)
pública de respuesta <Map <String, Object >> getAllInfoById (@ApiParam ( "商品 ID") @RequestParam Entero id) {
// hacer sthing
}
}
1
2
3
4
5
6
7
8
Redistemplate 版:
@Autowired
redisTemplate RedisTemplate privado;
@Prueba
demostración public void () {
// ReDiS tipo común de manipulación de datos que no figuran conjunto zConfigurar
// tipo de datos de cadena
redisTemplate.opsForValue () conjunto ( "test", "123").;
redisTemplate.opsForValue (). get ( "test") // salida es 123
// lista de tipos de datos
. RedisTemplate.opsForList () rightPushAll ( "lista", nuevo String [] { "1", "2", "3"}); // inserto elementos de la derecha
. RedisTemplate.opsForList () alcance ( "lista", 0, -1); // Obtener todos los elementos
. RedisTemplate.opsForList () de índice ( "listRight", 1); // Obtener elemento subíndice 2
. RedisTemplate.opsForList () rightPush ( "listRiht", "1"); // también se inserta desde el lado derecho desde la izquierda y interpolados
redisTemplate.opsForList () leftPop ( "lista") ;. // elementos del estallido de los elementos del estallido de izquierda no existirán
//picadillo
redisTemplate.opsForHash () Haskey ( "redisHash", "111") ;. // determina si existe la tecla de almohadilla
redisTemplate.opsForHash put () ( "redisHash", "nombre", "111") ;. // almacena los datos de hash
. RedisTemplate.opsForHash () teclas ( "redisHash"); // Obtener el valor hash de la clave correspondiente a
redisTemplate.opsForHash get () ( "redisHash", "edad") ;. // obtener el valor hash para una clave dada