1.Redisとは何ですか?
非リレーショナル データベース、中間キーとして理解できますが、厳密に言えば、これはデータベースではなく、データ構造化された保存方法の集合であり、SQL 標準、トランザクション、
1.2 なぜ何に使いたいのですか?
A-データはメモリに保存されるため、アクセス速度が速く、失われにくいです。
B-収納できるタイプは5種類
C - クラスター操作とトランザクション操作を実行できる
D- 複数言語のクライアント用インターフェースがあり、より便利です
一般に、これは実際のプロジェクトで役立ちます: キャッシュ、ログイン時の情報の保存、リーダーボード、スレッドの安全性を防ぐためのカウンターなど。
2. Redisのインストールと使用
2.1 ダウンロードアドレス
中国公式サイト:CRUGウェブサイト
ダウンロード後は解凍して遊ぶだけ
2.2 コマンドを使用して Redis を起動する
直接ダブルクリックすることもできますが、cmd から始めることをお勧めします。
2.2 redisの5つの主要なデータ型 – 基本的なコマンド操作
A-String 型キー - 値型
set name XX -- キーを name に設定し、値は xx
get name xx 名前としてキーを取得し、値は xx です
mset (複数の値を設定) mget (複数の値を取得)
スクリーンショットが多すぎて自分で確認できない
Bリストタイプ
Cキーの種類
Dセットタイプ
E ハッシュのタイプ
2.3 javaを使ってredisを操作する実際の使い方
SpringBootプロジェクトに基づいて構築中
対応するインポート依存関係
<!--spirngboot springdata对redis支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
構成ファイルで基本的な構成を実行します
redis:
database: 0
host: 127.0.0.1
port: 6379
password: 123456
jedis:
pool:
max-wait: 2000ms
min-idle: 2
max-idle: 8
コードで使用する
@Autowired
private RedisTemplate redisTemplate;
@Test
public void test(){
redisTemplate.opsForValue().set("redis","string类型");
System.out.println(redisTemplate.opsForValue().get("redis"));
}
ここでシリアル化の問題が発生することに注意してください。
オブジェクトを Redis に置くと、それを取り出すときにシリアル化の問題が発生するため、デシリアル化する必要があります。
方法1:redisに置きたいオブジェクトはSerializerインターフェースを実装していますが、この方法では配置する各クラスがSerializerインターフェースを実装しており、
方法 2: Redis を変換し、
以前の Redis インターフェイスを放棄し、プロジェクトでの操作に次の Redis を使用します。
/缓存的配置
@Configuration
public class RedisConfig {
@Resource
private RedisConnectionFactory factory;
//使用JSON进行序列化
@Bean
public RedisTemplate<Object, Object> redisTemplate() {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
//JSON格式序列化
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
//key的序列化
redisTemplate.setKeySerializer(genericJackson2JsonRedisSerializer);
//alue的序列化
redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);
//hash结构key的虚拟化
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
//hash结构value的虚拟化
redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);
return redisTemplate;
}
}
インポート時にさまざまなポイントでシリアル化された Redis が使用される
//序列化的redis
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
3. Redis の永続化
Redisの有無はメモリに基づいて実装されており、ダウンタイム等によるデータ損失を防ぐため、
Redis はメモリ内のデータを別のディスクにバックアップします。
Redis の 2 つの永続化方式: AOP、RDB
-
RDB: レコード データ スナップショット
利点:
1. ファイル バックアップに便利な永続ファイルを生成します。ディザスタ リカバリ RDB は非常に良い選択です。
2. サブプロセスをフォークして永続化し、パフォーマンスは AOF よりも優れ、ファイル サイズは小さくなります。起動時の回復速度 欠点
:
1. データの損失を 100% 防ぐ方法はありません
2. データセットが大きいため、FORk 子プロセスが永続化されるとサーバーがフリーズします。
AOF: レコード書き込みコマンドの
利点:
1. データはより安全です
。 2. Append が使用されます。たとえ長時間ダウンしていても、永続的なデータには影響しません。
3. ログが大きすぎるため、書き換えられる可能性があります
。 4. AOFログ形式が明確で理解しやすい
欠点:
1.AOF ファイルは通常、RDB ファイルよりも大きい
2.AOF データのリカバリは RDB よりも遅い
ベスト プラクティス: 2 つを組み合わせて、データのバックアップ、移行、災害復旧に RDB を使用します。AOF 永続性により、データが失われないことが保証されます。
4. Redis の削除メカニズム
排除メカニズムは何ですか?
-
volatile-lru: 削除する有効期限が設定されたデータ セットから、最も最近使用されていないデータを選択します。
-
volatile-ttl: 有効期限が設定されているデータセットから有効期限が切れるデータを選択して削除します
-
volatile-random: 有効期限を設定してデータセットからデータの削除をランダムに選択します
-
allkeys-lru: 削除するデータ セットから最も最近使用されていないデータを選択します。
-
allkeys-random: 削除するデータをデータセットからランダムに選択します
-
no-enviction: エンビクションを使用しません
redis.window.conf 構成を変更するには、maxmemory を変更して削除メカニズムを調整します。
Redis については、センチネル モード、クラスタ クラスタ、キャッシュ中に発生する雪崩、故障、侵入など、他にもたくさんあります。
この記事は、初心者がプロジェクトで Redis ミドルウェアを簡単に使用できるようにすることだけを目的としています。Redis の詳細バージョンは後でリリースされる予定です。
勉強と交換へようこそ、欠点を指摘してください、気に入ったら、いいね+ブックマークしてください、ありがとうございます