春BOOT2(C):使用春BOOT2はRedisのキャッシュを統合しました

序文

要約の前でキャッシュメカニズムのMyBatisのを達成SpringBoot、まれに実際のプロジェクトで使用されていないが、二次キャッシュメカニズムをMyBatisのではなく、キャッシュより、サードパーティ製を使用するのRedisを

Redisのはメモリ、データベースに格納されているオプションの永続キーと値のペアに基づいて、ANSI C、サポートネットワークで書かれたオープンソースです。

インストール開始のRedis

Redisののインストールは、あまりにも多くを話すに直接移動していない公式のダウンロードのRedis、ダウンロードRedis-x64-3.2.100.zipを、CMD、ディレクトリ内のRedisを入力してください:のRedis-SERVER.EXE redis.windows.confを開始します

さらに、ツールはデスクトップクライアントRedisの可視化に接続することができる。redisdesktop

コードの展開

春ブーツはすぐにプロジェクトをビルド

Redisの依存関係を追加

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

application.yml設定

spring:
  redis:
    host: 127.0.0.1
    database: 0
    password:
    port: 6379
    jedis:
      pool:
        max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)
        max-wait: -1ms  # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 10  # 连接池中的最大空闲连接
        min-idle: 5 # 连接池中的最小空闲连接

RedisConfigの設定クラス

@Autowired
private RedisConnectionFactory factory;

/**
 *
 * @return
 */
@Bean
public RedisTemplate<String, Object> redisTemplate() {
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
    //更改在redis里面查看key编码问题
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setHashKeySerializer(new StringRedisSerializer());
    redisTemplate.setHashValueSerializer(new StringRedisSerializer());
    redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
    redisTemplate.setConnectionFactory(factory);
    return redisTemplate;
}

RedisUtilsツール

@Autowired
private RedisTemplate redisTemplate;
// 简单的K-V操作
@Resource(name="redisTemplate")
private ValueOperations<String, String> valueOperations;

// 针对Map类型的数据操作
@Resource(name="redisTemplate")
private HashOperations<String, String, Object> hashOperations;

// 针对List类型的数据操作
@Resource(name="redisTemplate")
private ListOperations<String, Object> listOperations;

// set类型数据操作
@Resource(name="redisTemplate")
private SetOperations<String, Object> setOperations;

// zset类型数据操作
@Resource(name="redisTemplate")
private ZSetOperations<String, Object> zSetOperations;

エンティティクラスSysCodeEntity

@Data
public class SysCodeEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    private int id;

    // 分类编码
    private String kindCode;

    // 分类名称
    private String kindName;

    // CODE编码
    private String code;
    ......
}

ServiceImpl実装クラス

/**
 * 查询所有数字字典
 * @return
 */
@Override
public List<SysCodeEntity> queryCodeAll() {
    logger.info("先从缓存中查找,如果没有则去数据进行查询");
    List<SysCodeEntity> codeList = (List<SysCodeEntity>)redisTemplate.opsForList().leftPop("codeList");
    if (codeList == null) {
        logger.info("说明缓存中没有数据,则到数据库中查询");
        codeList = sysCodeDao.queryCodeAll();

        logger.info("将数据库获取的数据存入缓存");
        redisTemplate.opsForList().leftPush("codeList", codeList);
    } else {
        logger.info("则说明缓存中存在,直接从缓存中获取数据");
    }
    logger.info("codeList=" + codeList);
    return codeList;
}

具体的にはノートに説明し、上記実施例はleftPop opsForList取得し、これを記憶及びleftPush Redisのデータをキャッシュすることにより反映されています。

コントローラ層の実装

/**
 * 查询所有数字字典
 * @return
 */
@RequestMapping("/getAll")
private List<SysCodeEntity> getUser() {
    Long startTime = System.currentTimeMillis(); //开始时间
    List<SysCodeEntity> codeList = sysCodeService.queryCodeAll();
    Long endTime = System.currentTimeMillis(); //结束时间
    System.out.println("查询数据库--共耗时:" + (endTime - startTime) + "毫秒"); //1007毫秒
    return codeList;
}

ポストマンテスト

http://localhost:8080/getAll

ログ情報

まとめと展開

1、Redisのサポート:設定されたソートセットを注文した文字列の文字列、ハッシュハッシュ、一覧リスト、セットのコレクションは、、、7つのデータタイプをパブリッシュ/サブスクライブ、取引の取引をパブリッシュおよびサブスクライブ

2、Redisの実用的なシナリオ:キャッシングシステム、カウンタ、メッセージキューシステム、リーダーボードと関連する問題、ソーシャルネットワーク、ユーザー投票とソート時間に応じて、有効期限が切れたアイテムの処理、リアルタイムシステム

3、Redisのは、高度な機能:スロークエリ(内部実行時間が指定された制限時間クエリを超える)、パイプラインのパイプライン(クライアントとRedisのバッチ処理のための通信回数を減らす)、(大量のデータのために設計された)ビットマップビットマップ、 HyperLogLog(独立した統計データを完了するために非常に小さなスペース)、パブリッシュ・サブスクライブ、メッセージキュー、GEOの場所ストレージ

4、Redisの持続性:

(使用したスナップショットRDB スナップショットを非同期メモリ形式からRDBに随時ハードディスクにセット半耐久モードデータ)

ログインAOF(1.1版のみ追加できるタイプのログを、形式AOFより安全な代替を使用し始めた。データ変更操作が.Redisレコードのみ無限の成長を回避するために、バックグラウンドで追加のログレコードに変更を加えることができます設定しました)

5、Redisの分散ソリューション:マスター・スレーブ複製、クラスタリング...

サンプルコード-github

後期続けることへの技術のRedisを探求し続けます...

推奨される読書:Redisの分散練習への行き方


著者について:

個人ブログ:鳥はたわごとはありません

githubのホーム:niaobulashi

githubのブログ:鳥はたわごとはありません

ナゲッツ:鳥はたわごとはありません

パークブログ:鳥はたわごとはありません

ほとんど知っている:鳥はたわごとはありません

おすすめ

転載: www.cnblogs.com/niaobulashi/p/spring-boot-redis.html