1.シーン記述
原因プロジェクトにローカルキャッシュを使用するには、Redisの理由を具体的でないなど、議論のプロセスを記録するために、必要に友人を助けるために願っていません。
2.ソリューション
2.1ローカルキャッシュとしてGoogleのグアバを使用します
最初のアイデアは、理由はプロジェクト自体denpencyのがGoogleのグアバ、グアバを使用することです。
2.1.1ポンポンファイル
これは次のように、3つの依存関係が必要です。
<!--软件老王 1-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<!--软件老王 2-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>
<!--软件老王 3-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>24.0-jre</version>
</dependency>
2.1.2 Javaクラス
(1)GuavaCacheManager
新豆、グアバリターンとGuavaCacheManagerの設定。
import com.google.common.cache.CacheBuilder;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.guava.GuavaCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
/**
*
* @auther: 软件老王
*/
@Configuration
@EnableCaching
public class GuavaCacheConfig {
@Bean
public CacheManager cacheManager() {
GuavaCacheManager cacheManager = new GuavaCacheManager();
cacheManager.setCacheBuilder(
CacheBuilder.newBuilder().
expireAfterWrite(6, TimeUnit.HOURS).
maximumSize(1000)); //软件老王,6小时过期,最大1000条
return cacheManager;
}
}
(2)スプリング注釈ラベルの使用キャッシング
/**
*
* @auther: 软件老王
*/
@Cacheable(value = "ruanjianlaowang")
public VO<UserParm> getUserInfo(String token) {
VO<UserParm> vo = userauthClient.verifyToken(token);
return vo;
}
グアバのローカルキャッシュが完了しています。
2.2スプリングフレームワークはローカルキャッシュ方式を提供します
春はすでに抽象クラスを提供し、あなただけがデフォルトの負荷のjarパッケージを設定する必要があり、あなたはタイプを設定できますが、グアバよりもローカル・キャッシュ・カフェインとして、spring5から、グアバ雑草を出し始め、カフェインに置き換え、テストを行うための春たくさんそれ以上に、我々はまた、ローカルキャッシュとしてカフェインを変更しました。
springbootとグアバ、カフェインおよび他のローカルキャッシュ、springboot1、グアバがあったが、グアバの前に取り除かキャッシュインターフェースなので、ローカルキャッシュ内に置くグアバをspringboot2のみ設定を定義する必要があり、その後、あなたはここでしか内側設定ファイルで定義する必要がありますタイプは自動的に注入されます。
2.3カフェインローカルキャッシュ
2.3.1ポンポンファイル
<!--软件老王-->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.8.0</version>
</dependency>
2.3.2プロフィール
spring:
cache:
type: caffeine
cache-names: bc.gateway.ut
caffeine:
# spec: maximumSize=5000,expireAfterWrite=20s
spec: maximumSize=5000,expireAfterAccess=3600s
つまり特定のパラメータ:
/**
* @auther: 软件老王
*/
• initialCapacity=[integer]: 初始的缓存空间大小
• maximumSize=[long]: 缓存的最大条数
• maximumWeight=[long]: 缓存的最大权重
• expireAfterAccess=[duration]: 最后一次写入或访问后经过固定时间过期
• expireAfterWrite=[duration]: 最后一次写入后经过固定时间过期
• refreshAfterWrite=[duration]: 创建缓存或者最近一次更新缓存后经过固定的时间间隔,刷新缓存
2.3.3使用や春のラベルは移動しません。
/**
*
* @auther: 软件老王
*/
@Cacheable(value = "ruanjianlaowang")
public VO<UserParm> getUserInfo(String token) {
VO<UserParm> vo = userauthClient.verifyToken(token);
return vo;
}
春のキャッシュタグの2.4説明
4つのタブ:
(1)@Cacheableは、一次キャッシュ、そうでない場合は、実行中に方法を照会し、それが実行された後、戻り値はキャッシュを配置します。
(2)@CachePut、いかなるクエリが決定しない、または直接、キャッシュの内容を更新、追加、または同様の更新添加します。
類似した(3)@CacheEvict、直接の除去は、削除します。
(4)@キャッシング、1,2,3組み合わせ
値 | 春の構成ファイルに定義されたキャッシュ名は、あなたは、少なくとも一つを指定する必要があります。 | 例如:@Cacheable(値=」laowang_cache1” )@Cacheable(値= {」」laowang_cache1、」laowang_cache2” } |
キー | あなたはSPELが指定されていない場合は、デフォルトのパラメータは、すべての方法に従って合成され、表現に基づいて作成指定したい場合は、キャッシュのキーは、空にすることができます | @Cacheable(値=」laowang_cache1” 、キー=」#userNameを」) |
調子 | バッファー条件、空にすることができ、SPELの書き込みは、それが唯一のキャッシュのために真である、trueまたはfalseを返します | @Cacheable(値=」laowang_cache1” 、状態=」#1 userName.length()> 11” ) |
私は、「ソフトウェアファラオは、」私は、次の聖歌を集中するために、私は可能性がある場合、その後の更新秒を知っていると感じましたよ!ようこそフォーラム号の同名のパブリックメッセージ交換!