序文
要約の前でキャッシュメカニズムの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のブログ:鳥はたわごとはありません
ナゲッツ:鳥はたわごとはありません
パークブログ:鳥はたわごとはありません
ほとんど知っている:鳥はたわごとはありません