Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统 (区别于MySQL的二维表格的形式存储。)。和Memcache类似,但很大程度补偿了Memcache的不 足。和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到 内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所以Memcache的 应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修 改操作写入追加的记录文件,实现数据的持久化。 Redis的特点: 1,Redis读取的速度是110000次/s,写的速度是81000次/s; 2,原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 3,支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合) 4,持久化,集群部署 5,支持过期时间,支持事务,消息订阅
<!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- spring2.X集成redis所需common-pool2--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.6.0</version> </dependency>
#redi配置 spring.redis.host=ip地址 spring.redis.port=端口号 spring.redis.database=0 spring.redis.password=密码 spring.redis.lettuce.pool.max-active=20 spring.redis.lettuce.pool.max-wait=1 #最大阻塞等待时间(负数表示没有限制) spring.redis.lettuce.pool.max-idle=5 spring.redis.lettuce.pool.min-idle=0 # 关闭超时时间 spring.redis.lettuce.shutdown-timeout=100
@EnableCaching @Configuration public class RedisConfig extends CachingConfigurerSupport { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); RedisSerializer<String> redisSerializer = new StringRedisSerializer(); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setConnectionFactory(factory); //key序列化方式 template.setKeySerializer(redisSerializer); //value序列化 template.setValueSerializer(jackson2JsonRedisSerializer); //value hashmap序列化 template.setHashValueSerializer(jackson2JsonRedisSerializer); return template; } @Bean public CacheManager cacheManager(RedisConnectionFactory factory) { RedisSerializer<String> redisSerializer = new StringRedisSerializer(); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); //解决查询缓存转换异常的问题 ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); // 配置序列化(解决乱码的问题),过期时间600秒 RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() .entryTtl(Duration.ofSeconds(600)) .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redi sSerializer)) .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(ja ckson2JsonRedisSerializer)) .disableCachingNullValues(); RedisCacheManager cacheManager = RedisCacheManager.builder(factory) .cacheDefaults(config) .build(); return cacheManager; } }
Entsprechend zur Methode Das zurückgegebene Ergebnis wird bei der nächsten Anfrage zwischengespeichert, wenn der Cache vorhanden ist, werden die zwischengespeicherten Daten direkt gelesen und zurückgegeben, wenn der Cache nicht vorhanden ist, wird die Methode ausgeführt und das zurückgegebene Ergebnis im Cache gespeichert. Wird im Allgemeinen in Abfragemethoden verwendet.
Sehen Sie sich den Quellcode an, die Attributwerte lauten wie folgt:
Die mit dieser Annotation markierte Methode wird bei jeder Ausführung aufgerufen und das Ergebnis angezeigt im angegebenen Cache gespeichert werden. Anstatt die Datenbank erneut abzufragen, besteht ein weiterer Ansatz darin, die Daten direkt aus dem Cache der Antwort zu lesen. Wird im Allgemeinen zum Hinzufügen neuer Methoden verwendet.
Sehen Sie sich den Quellcode an, die Attributwerte lauten wie folgt
Die Methode, die dieses Annotationsflag verwendet, löscht den angegebenen Cache. Wird im Allgemeinen zum Anzeigen des Quellcodes in der Aktualisierungs- oder Löschmethode verwendet. Die Attributwerte lauten wie folgt:
不能连接redis: (1)关闭liunx防火墙 (2)找到redis配置文件: 修改 protected-mode yes 改为 protected-mode no 注释掉: bind 127.0.0.1
@Cacheable(value = "banner", key = "'selectIndexList'") @Override public List<CrmBanner> selectIndexList() { List<CrmBanner> list = baseMapper.selectList(new QueryWrapper<CrmBanner>().orderByDesc("sort")); return list; } @CacheEvict(value = "banner", allEntries=true) @Override public void removeBannerById(String id) { baseMapper.deleteById(id); }
in Redis:
Abfrageverwendung : @Cacheable-Annotation
Ändern und löschen: @CacheEvict-Annotation verwenden
Hinzufügen: @CachePut-Annotation verwenden
Das obige ist der detaillierte Inhalt vonWas sind die Anmerkungen für Springboot Integrated Redis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!