Maison  >  Article  >  base de données  >  Comment appliquer le cache autonome Redis du mécanisme de mise en cache SpringBoot

Comment appliquer le cache autonome Redis du mécanisme de mise en cache SpringBoot

WBOY
WBOYavant
2023-06-03 12:41:50842parcourir

Cache autonome Redis

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 :

1. Créer un projet pour ajouter des dépendances de cache

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>

2 . La configuration du cache

Le cache autonome de Redis nécessite uniquement que les développeurs configurent Redis et la configuration du cache dans application.properties Le code est le suivant

#🎜. 🎜#

# 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#🎜 🎜#

@SpringBootApplication
@EnableCaching
public class CacheApplication {
    public static void main(String[] args) {
        SpringApplication.run(CacheApplication.class, args);
    }
}

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

4.

public class Book implements Serializable {
    private Integer id;
    private String name;
    private String author;
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name=&#39;" + name + &#39;\&#39;&#39; +
                ", author=&#39;" + author + &#39;\&#39;&#39; +
                &#39;}&#39;;
    }
    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

Créer une classe de test pour tester la méthode dans Service

@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);
    }
}
#🎜 🎜#Exécutez la méthode, la console imprime le journal comme suit :#🎜🎜 #

deleteBookById

getBookById

deleteBookById

getBookById

b3:Book{ id=1, name='Romance des Trois Royaumes', author='Luo Guanzhong'}

updateBookById

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer