Identique à Ehcache, si Redis existe sous le chemin de classe et que Redis a été configuré, RedisCacheManager sera utilisé comme fournisseur de cache par défaut. -alone cache sont les suivants :
Créer un projet Spring Boot et ajouter des dépendances spring-boot-starter-cache et Redis# 🎜🎜#
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
#🎜. 🎜#
# Configuration du cache# 🎜🎜## Configurez le nom du cache Les clés dans Redis ont un préfixe Le préfixe par défaut est "nom du cache ::"spring.cache.cache-names=. c1,c2# Configurer la période de validité du cache, c'est-à-dire le délai d'expiration de la clé dans Redis
spring.cache.redis.time-to-live=1800s
# Configuration Redis#🎜🎜 #spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123456
spring.redis.jedis .pool.max-active=8
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.max-wait=-1ms
spring.redis .jedis.pool.min-idle=0
#🎜 🎜#
3 Activez le cache
Activez le cache dans la classe d'entrée du projet, comme suit#🎜 🎜#Les étapes 4 et 5 analysent brièvement le mécanisme de mise en cache d'Ehcache avec l'application SpringBoot 2 .x, plus d'explications ici@SpringBootApplication @EnableCaching public class CacheApplication { public static void main(String[] args) { SpringApplication.run(CacheApplication.class, args); } }Copier après la connexion
public class Book implements Serializable { private Integer id; private String name; private String author; @Override public String toString() { return "Book{" + "id=" + id + ", name='" + name + '\'' + ", author='" + author + '\'' + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } }
BookDao
@Repository @CacheConfig(cacheNames = "book_cache") public class BookDao { @Cacheable public Book getBookById(Integer id) { System.out.println("getBookById"); Book book = new Book(); book.setId(id); book.setName("三国演义"); book.setAuthor("罗贯中"); return book; } @CachePut(key = "#book.id") public Book updateBookById(Book book) { System.out.println("updateBookById"); book.setName("三国演义2"); return book; } @CacheEvict(key = "#id") public void deleteBookById(Integer id) { System.out.println("deleteBookById"); } }
5. Créer une classe de test
@RunWith(SpringRunner.class) @SpringBootTest public class CacheApplicationTests { @Autowired BookDao bookDao; @Test public void contextLoads() { bookDao.deleteBookById(1); bookDao.getBookById(1); bookDao.getBookById(1); bookDao.deleteBookById(1); Book b3 = bookDao.getBookById(1); System.out.println("b3:"+b3); Book b = new Book(); b.setName("三国演义"); b.setAuthor("罗贯中"); b.setId(1); bookDao.updateBookById(b); Book b4 = bookDao.getBookById(1); System.out.println("b4:"+b4); } }
getBookById
deleteBookByIdupdateBookById
b4:Book{id=1, name='Romance des Trois Royaumes 2', auteur ='Luo Guanzhong'}Afin d'éviter la mise en cache pour les tests d'impact en va-et-vient, nous effectuons d'abord une opération de suppression (qui supprime également le cache). Ensuite, une requête a été exécutée, s'imprimant normalement, puis une autre requête a été exécutée sans impression (le cache a été lu directement), puis la suppression a été exécutée, puis la requête a été exécutée et l'impression était normale (l'opération de suppression a également supprimé le cache), et puis l'opération de mise à jour a été exécutée (le cache est mis à jour en même temps), et enfin la requête est à nouveau exécutée et les données mises à jour sont imprimées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!