Redisのキーとデータ構造の異なる5種類の間のマッピングを格納することができ、データ構造のこれらの5つのタイプは、文字列(String)を、一覧(リスト)、セット(セット)、ハッシュ(ハッシュ)とZSET(秩序ありますコレクション)
文字列が文字列全体または文字列の文字列、整数または浮動小数点数であることを特徴操作を行う部分と、浮動小数点実行対象の増分(インクリメント)または減分(デクリメント)
リストにリンクされたリストは、リスト上の各ノードはリストから文字列の端部にプッシュまたはポップアップ要素を含み、オフセットトリム(TRIM)に従ってリスト、読む、単一または複数の要素、値検索や要素を削除
ランダムな文字列コレクタ(unorderedcollection)を含むセット、及び各文字列は、それがユニークで含まれ、別の追加、取得、個々の要素を削除する;セット内の要素があるかどうかを確認し、計算交差点、労働組合、違いは、ランダム要素のコレクションから披露してもらいます
ハッシュハッシュテーブルは、追加取得し、単一のキーと値のペアを削除するには、順不同、キーと値のペアを含む、すべてのキーと値のペアを取得します
順序付けられた紐部材(メンバー)と浮動小数点スコア(スコア)との間のZSETマッピングは、要素は、単一要素を削除し、サイズスコア、取得することによって決定された順序で添加され、値の範囲(範囲)またはメンバーに係ります要素を取得します
注:Javaの豆シリアライズします
1.輸入依存度
//のGradle
コンパイルグループ:「org.springframework.boot」、名前:「春・ブート・スターター・データのRedis」、バージョン:「2.1.3.RELEASE」
//ポンポン
<依存>
<groupIdを> org.springframework.boot </ groupIdを>
<たartifactId>ばねブートスタータデータRedisの</たartifactId>
<バージョン> 2.1.3.RELEASE </バージョン>
</依存関係>
1
2
3
4
5
6
7
8
9
2. [設定のRedis
redis.config
@Configuration
パブリッククラスRedisConfig {
//シーケンスの注釈運転のRedis、その後、問題を解決するために使用
@Bean(名前= "myCacheManager")
公共のCacheManagerのCacheManager(RedisConnectionFactory redisConnectionFactory){
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory)。
RedisSerializer <オブジェクト> jsonSerializer =新しいGenericJackson2JsonRedisSerializer();
RedisSerializationContext.SerializationPair <オブジェクト>ペア= RedisSerializationContext.SerializationPair
.fromSerializer(jsonSerializer)。
RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig()
.serializeValuesWith(ペア)
defaultCacheConfig.entryTtl(Duration.ofMinutes(30))。
新しいRedisCacheManager(redisCacheWriter、defaultCacheConfig)を返します。
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/ **
*一連の操作の問題を解決redisTemplate
*
* @param工場RedisConnectionFactory
* @return redisTemplate
* /
@豆
@ConditionalOnMissingBean(名前= "redisTemplate")
公共RedisTemplateの<string、オブジェクト> redisTemplate(RedisConnectionFactory工場){
//設定redisTemplate
RedisTemplate <文字列、オブジェクト> redisTemplate =新しいRedisTemplate <>();
redisTemplate.setConnectionFactory(工場)。
//キーのシリアライズ
redisTemplate.setKeySerializer(STRING_SERIALIZER)。
//値のシリアライズ
redisTemplate.setValueSerializer(JACKSON__SERIALIZER)。
//ハッシュキーのシリアライズ
redisTemplate.setHashKeySerializer(STRING_SERIALIZER)。
//ハッシュ値のシリアライズ
redisTemplate.setHashValueSerializer(JACKSON__SERIALIZER)。
redisTemplate.afterPropertiesSet();
redisTemplateを返します。
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
スタートアップクラス構成
// @EnableCachingキャッシュ操作は、注釈を許可します
@SpringBootApplication
パブリッククラスShoppingMallApplication {
パブリック静的無効メイン(文字列[] args){
SpringApplication.run(ShoppingMallApplication.class、引数)。
}
}
1
2
3
4
5
6
7
application.yml 配置
#redisキャッシュの構成
繰り返し:
データベース:0
ホスト:@ip
ポート:6379
タイムアウト:8000
#書き込みに時間がない場合
パスワード:
jedis:
プール:
接続の#接続プールの最大数
アクティブ最大:10
#接続プールの最大遮断時間
最大ウェイト:-1
#最小接続プールのアイドル状態の接続
分アイドル:0
#最大接続プールのアイドル接続
最大アイドル:8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
3.キャッシュのコメント紹介
異なる方法が更新されているので、キャッシュを更新するときにキーを記入しない場合はメソッド・キャッシュの演算結果が、後から同じデータ、アクセスcacheNamesと直接キャッシュからキーに、記入しなければならない、デフォルトのキーは、現在のメソッド名です故障
値:名前を指定しますキャッシュは、複数(配列)を指定することができます
キー:デフォルトのメソッドのパラメータのために使用されるキーキャッシュデータがSPELをサポート
するKeyGenerator:キージェネレータ
CacheManager:指定キャッシュマネージャ、またはパーサを取得するために、両方の第二選挙
条件:条件指定されたキャッシュ
ない限り:条件が真でキャッシュしない限り、戻り値はキャッシュされませんマイナス、判定結果を取得することができます。
同期:非同期がない限り、サポートされていませんか
@Cacheable(cacheNames = "XXX"、キー= "XXX")
1
キャッシュを更新しながら、そうでない場合は、キャッシュが更新されていない、財産と@Cacheable、ターゲットメソッドは、アップデートの注意に、キャッシュされた方法を対象とし、同じ時間を照会するための鍵になる、最初の呼び出しをデータベースを変更するキャッシュの両方の方法は、データを更新するために呼び出されます同じ
@CachePut(cacheNames = "XXX"、キー= "XXX")
1
削除キャッシュ
allEntries:削除すべてのキャッシュされたフィールド
beforeInvocation:メソッドの前にするかどうか
@CacheEvict(cacheNames = "XXX"、キー= "XXX")
1
@CacheConfig
あなたは、公開鍵生成方法を指定することができます
公共cacheNames(値)は、上記の統一クラスに記述することができ、まだ名前のすべてのキャッシュをカバーしていません
公共のCacheManager
@CacheConfig(cacheNames = "製品")
パブリッククラスProductInfoController {
@Caching(キャッシャブル= {@Cacheable}、PUT = {@CachePut})
公共レスポンス<地図<文字列、オブジェクト>> buyProduct(){
// sthingを行うには
}
}
1
2
3
4
5
6
7
8
キーは、動的パラメータの方法(サポートEL)に設定してもよいです
@Cacheable(cacheNames = "XXX"、キー= "#openid")
公共ResultVO <OrderDTO>詳細(@RequestParam( "OpenIDの")は、文字列のOpenID){
// sthingを行うには
}
1
2
3
4
コンポジットコメント
ときクエリデータキャッシュに更新データに移動します//
鄭州不妊病院ます。http://www.zzchyy110.com/
@Caching(キャッシャブル= {@Cacheable}、PUT = {@CachePut})
@Caching(キャッシャブル= {@Cacheable}、PUT = {@CachePut}、EVICT = {@CacheEvict})
1
2
4.テスト
注バージョン:
@CacheConfig(cacheNames = "ショッピング-productInfo")//カスタム名
パブリッククラスProductInfoController {
//シンプルな使い方
@Caching(キャッシャブル= {@Cacheable}、PUT = {@CachePut})
公共レスポンス<地図<文字列、オブジェクト>> getAllInfoById(@ApiParam( "商品ID")@RequestParam整数ID){
// sthingを行うには
}
}
1
2
3
4
5
6
7
8
Redistemplate版:
@Autowired
プライベートRedisTemplate redisTemplate。
@テスト
ます。public voidデモ(){
//が記載されていないデータ操作セットZSETの一般的なタイプをRedisの
//文字列データ型
redisTemplate.opsForValue()セット( "試験"、 "123")。
redisTemplate.opsForValue()。( "テスト")を取得//出力は123であります
//データ型のリスト
。RedisTemplate.opsForList()rightPushAll( "リスト"、新しいString [] { "1"、 "2"、 "3"}); //右から要素インサート
。RedisTemplate.opsForList()範囲( "リスト"、0、-1); //すべての要素を取得
。RedisTemplate.opsForList()インデックス( "listRight"、1); //要素の添字2を取得
。RedisTemplate.opsForList()rightPush(「listRiht」、「1」)、補間左から//また、右側から挿入されます
redisTemplate.opsForList()leftPop(「リスト」);.左ポップの要素から//ポップの要素が存在しません。
//ハッシュ
redisTemplate.opsForHash()hasKey( "redisHash"、 "111");. //ハッシュキーが存在するか否かを判定する
redisTemplate.opsForHash()プット( "redisHash"、 "名"、 "111");. //ストアハッシュデータ
。RedisTemplate.opsForHash()キー(「redisHash」); //に対応するキーのハッシュ値を取得します。
redisTemplate.opsForHash()(「redisHash」、「年齢」);. //指定されたキーのハッシュ値を取得します