@Entity @Daten @NoArgsConstructor öffentliche Klasse User implementiert Serializable {
@Id @GeneratedValue private Long id; private String name; private Integer age; public User(String name, Integer age) { this.name = name; this.age = age; } }
@CacheConfig(cacheNames = "users")
öffentliche Schnittstelle UserRepository erweitert JpaRepository
@Cacheable User findByName(String name); }
In früheren Versionen von Spring Boot 1.x
war der Name dieser Abhängigkeit spring-boot-starter-redis
, also in >Spring Boot 1.x
Das grundlegende Tutorial unterscheidet sich von hier.
Schritt 2: Fügen Sie der Konfigurationsdatei Konfigurationsinformationen hinzu, nehmen Sie den lokalen Betrieb als Beispiel, zum Beispiel: pom.xml
中增加相关依赖:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
在Spring Boot 1.x
的早期版本中,该依赖的名称为spring-boot-starter-redis
,所以在Spring Boot 1.x
基础教程中与这里不同。
第二步:配置文件中增加配置信息,以本地运行为例,比如:
spring.redis.host=localhost spring.redis.port=6379 spring.redis.lettuce.pool.max-idle=8 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-wait=-1ms spring.redis.lettuce.pool.min-idle=0 spring.redis.lettuce.shutdown-timeout=100ms
关于连接池的配置,需要注意:
Redis
的连接池配置在 1.x 版本中前缀为spring.redis.pool
与Spring Boot 2.x
有所不同。在 1.x 版本中采用jedis
作为连接池,而在 2.x 版本中采用了lettuce
作为连接池以上配置均为默认值,实际上生产需进一步根据部署情况与业务要求做适当修改.
再来试试单元测试:
@Slf4j @RunWith(SpringRunner.class) @SpringBootTest public class Chapter54ApplicationTests {
@Autowired private UserRepository userRepository; @Autowired private CacheManager cacheManager; @Test public void test() throws Exception { System.out.println("CacheManager type : " + cacheManager.getClass()); // 创建1条记录 userRepository.save(new User("AAA", 10)); User u1 = userRepository.findByName("AAA"); System.out.println("第一次查询:" + u1.getAge()); User u2 = userRepository.findByName("AAA"); System.out.println("第二次查询:" + u2.getAge()); } }
执行测试输出可以得到:
CacheManager type : class org.springframework.data.redis.cache.RedisCacheManager Hibernate: select next_val as id_val from hibernate_sequence for update Hibernate: update hibernate_sequence set next_val= ? where nextval=? Hibernate: insert into user (age, name, id) values (?, ?, ?) 2020-08-12 16:25:26.954 INFO 68282 --- [ main] io.lettuce.core.EpollProvider : Starting without optional epoll library 2020-08-12 16:25:26.955 INFO 68282 --- [ main] io.lettuce.core.KqueueProvider : Starting without optional kqueue library Hibernate: select user0.id as id10, user0_.age as age20, user0_.name as name30 from user user0 where user0.name=? 第一次查询:10 第二次查询:10
(推荐微课:Spring微课)
可以看到:
第一行输出的CacheManager type
为org.springframework.data.redis.cache.RedisCacheManager
,而不是上一篇中的EhCacheCacheManager
Redis
wird in der Version spring.redis vorangestellt 1.x .pool
unterscheidet sich von Spring Boot 2.x
. In Version 1.x wird jedis
als Verbindungspool verwendet, während in Version 2.x lettuce
als Verbindungspool verwendet wird. Die oben genannten Konfigurationen sind allesamt Standardwerte . Tatsächlich muss die Produktion je nach Bereitstellungssituation und Geschäftsanforderungen weitere entsprechende Änderungen vornehmen
@RunWith(SpringRunner.class)
@SpringBootTest
öffentliche Klasse Kapitel 54ApplicationTests {CacheManager-Typ in der ersten Zeile der Ausgabe code> ist <code>org.springframework.data.redis.cache.RedisCacheManager
, nicht der EhCacheCacheManager
im vorherigen Artikel🎜🎜🎜🎜Wenn ich es zum zweiten Mal abfrage, da Gibt die SQL-Anweisung nicht aus, daher wird sie aus dem Cache abgerufen🎜🎜🎜
Das obige ist der detaillierte Inhalt vonSo verwenden Sie den zentralisierten Cache von Redis in Spring Boot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!