Ehcache と同様に、Redis がクラスパスの下に存在し、Redis が構成されている場合、デフォルトで RedisCacheManager がキャッシュ プロバイダーとして使用されます。
Spring Boot プロジェクトを作成し、spring-boot-starter-cache と 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>
Redis スタンドアロン キャッシュでは、開発者が application.properties で Redis 構成とキャッシュ構成を実行することのみが必要です。コードは次のとおりです
# キャッシュ構成
#キャッシュ名を設定します。Redis の各キーにはプレフィックスがあり、デフォルトのプレフィックスは "キャッシュ名::"
spring.cache.cache-names=c1,c2
# です。キャッシュの有効期間を設定します。これは、Redis のキーの有効期限です
spring.cache.redis.time -to-live=1800s
# 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
次のように、プロジェクト エントリ クラスでキャッシュを有効にします
@SpringBootApplication @EnableCaching public class CacheApplication { public static void main(String[] args) { SpringApplication.run(CacheApplication.class, args); } }
ステップ 4 と 5 は、SpringBoot のキャッシュ メカニズムの簡単な分析の Ehcache 2.x アプリケーションと同じであるため、これ以上の説明は省略します。ここに与えられます
Book
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"); } }
テストを作成しますクラスを作成し、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); } }
メソッドを実行すると、コンソールに次のようなログが出力されます。 :
deleteBookById
getBookById
deleteBookById
getBookById
b3:Book{id=1, name='三國志', author='羅冠中'}
updateBookById
b4:Book{id=1, name='三國志 2 ', author='Luo Guanzhong'}
往復テストにおけるキャッシュの影響を回避するために、最初に削除操作を実行します (これによりキャッシュも削除されます)。次に、クエリが実行されて正常に印刷され、次に別のクエリが印刷なしで実行され (キャッシュが直接読み取られました)、次に削除が実行されました。次にクエリが実行され、印刷が正常に行われました (削除操作によりキャッシュも削除されました)。更新操作が実行され (キャッシュも同時に更新されます)、最後にクエリが再度実行され、更新されたデータが出力されます。
以上がSpringBootキャッシュ機構のRedisスタンドアロンキャッシュを適用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。