Rumah >pangkalan data >Redis >Cara menggunakan cache bersendirian Redis bagi mekanisme caching SpringBoot

Cara menggunakan cache bersendirian Redis bagi mekanisme caching SpringBoot

WBOY
WBOYke hadapan
2023-06-03 12:41:50931semak imbas

Redis cache bersendirian

Sama seperti Ehcache, jika Redis wujud di bawah laluan kelas dan Redis telah dikonfigurasikan, RedisCacheManager akan digunakan sebagai penyedia cache secara lalai adalah seperti berikut:

1 Cipta projek dan tambah kebergantungan cache

Buat projek Spring Boot dan tambahkan spring-boot-starter-cache dan Redis dependencies

<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. . Konfigurasi cache

Cache berdiri sendiri Redis hanya memerlukan pembangun melakukan konfigurasi Redis dan konfigurasi cache dalam application.properties Kodnya adalah seperti berikut

# Konfigurasi cache
#. Konfigurasikan nama cache. Setiap kunci dalam Redis mempunyai Awalan, awalan lalai ialah "nama cache::"
spring.cache.cache-names=c1,c2
# Konfigurasikan tempoh sah cache, iaitu ialah, masa tamat tempoh utama dalam Redis
spring.cache.redis.time -to-live=1800s
# Redis configuration
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 Dayakan cache

Dayakan caching dalam kelas kemasukan projek, seperti berikut

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

Langkah 4 dan 5 adalah sama dengan aplikasi Ehcache 2.x analisis ringkas SpringBoot tentang mekanisme caching, jadi tiada penjelasan lanjut akan diberikan di sini

4. Cipta BookDao

Buku

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 untuk menguji kaedah dalam Perkhidmatan

@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);
    }
}

Laksanakan kaedah, konsol mencetak log seperti berikut :

deleteBookById
getBookById

deleteBookById
getBookById
getBookById b3:Buku{id=1, name='Romance of the Three Kingdoms', author='Luo Guanzhong'}
updateBookById
b4:Book{id=1, name='Romance of the Three Kingdoms 2' , author='Luo Guanzhong'}

Untuk mengelakkan kesan cache pada ujian ulang-alik, kami mula-mula melakukan operasi pemadaman ( Ini juga akan memadamkan cache). Kemudian pertanyaan dilaksanakan, mencetak secara normal, kemudian pertanyaan lain dilaksanakan tanpa mencetak (cache dibaca secara langsung), kemudian pemadaman dilaksanakan, kemudian pertanyaan dilaksanakan dan pencetakan adalah normal (operasi pemadaman juga memadamkan cache), dan kemudian operasi kemas kini telah dilaksanakan ( Cache dikemas kini pada masa yang sama), dan akhirnya pertanyaan dilakukan semula dan data yang dikemas kini dicetak.

Atas ialah kandungan terperinci Cara menggunakan cache bersendirian Redis bagi mekanisme caching SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam