Redisの5種類のデータ型使用概要
2992 ワード
redisはC言語で開発されたオープンソースの高性能キー値対(key-value)データベース(nosql)であり、キャッシュに適用される.複数のキー値データ型を提供することで、異なるシーンでの記憶要件に適応する.
redisの適用シーン: キャッシュ 分散クラスタアーキテクチャにおけるセッション分離 タスクキュー(秒殺、買い取り、12306など) アプリケーションランキング(SortedSet) Webサイトアクセス統計 データ期限切れ処理(expire)
これまでredisでサポートするキー値データ型は5種類ある.次のようになります. 文字列タイプ(String) ハッシュタイプ(Hash) リストタイプ(List) 集合タイプ(Set) 秩序化集合タイプ(SortedSet)
redisは単一スレッドである、比較的大きなデータを格納するのに適していない.redisのすべてのデータは文字列です.
各データ型の使用および操作コマンド:
1. String: key - value設定値 set key value 取得値 get key プラス inc key マイナス decr key
2. Hash: key - field - value
JavaのMap>タイプに相当設定値 hset key field value 取得値 hget key field プラスnum hincrby key field num
3. List
リストは順序的に繰り返すことができる、データ構造は二重チェーンテーブルキューであり、左右の2方向から要素を追加することができる.左から要素 を追加
lpush list a b c d右から要素 を追加
rpush list 1 2 3 4区間のデータを表示する(0から-1まではすべてを表示する) lrange list 0 -1 左からデータを取り出す(スタック削除) lpop list 右側からデータを取り出す(スタック削除) rpop list
4. Set
Setは無秩序で、繰り返してはいけない.追加要素 sadd set a b c d d クエリー要素 smembers set 削除要素 srem set a
5. SortedSet(zset)
zsetは順番があって、繰り返してはいけません
ランキングに適しており、ソートにはスコア属性が必要です.追加要素 zadd zset score member(
score memberは複数あります)要素を表示します.小さいから大きいまで(スコアを表示するにはwithscoresを追加する必要があります) zrange zset start end [withscores] 要素を表示します.大きいから小さいまで(スコアを表示するにはwithscoresを追加する必要があります) zrevrange zset start end [withscores] member要素にscore を追加
zincrby zset score member
その他のコマンド
keyの有効期限の設定(単位:秒)
expire key second
残り時間の表示(-2:存在しません、-1:永続化され、正数は残りの時間を表します)
ttl key
有効期限のクリア(永続化、成功は1、失敗は0)
persist key
キーの削除
del key
存在するか否かを判断する(存在は戻り1、存在しないは戻り0)
exists key
データベースを選択します.デフォルトは0番です.
select 0
redis持続化スキーム
redisのデータはすべてメモリの中に置いて、もし機械が切るならば、メモリのデータは失うことができて、そのため持続化をしなければならなくて、メモリの中のデータをディスクに保存して、次回起動する時データをメモリの中に回復することができます.
redis永続化には2つの方法がある(デフォルトではRDBがオン)
1.RDBスナップショット形式で現在時刻のデータを定期的にディスクに保存するとdumpが発生する.rdbファイル
特徴:データの損失が存在して、性能はわりに良くて、データのバックアップ
2.AOF(append only file)redisに対するすべての操作コマンドをaofファイルに記録し、データを復元するには再実行するだけでよい
特徴:毎秒保存して、データは比較的に完備して、性能を消耗します
2つの永続化スキームを同時に開始すると、AOFの永続化シナリオに従ってデータが復元されます.
redisの適用シーン:
これまでredisでサポートするキー値データ型は5種類ある.次のようになります.
redisは単一スレッドである、比較的大きなデータを格納するのに適していない.redisのすべてのデータは文字列です.
各データ型の使用および操作コマンド:
1. String: key - value
2. Hash: key - field - value
JavaのMap>タイプに相当
3. List
リストは順序的に繰り返すことができる、データ構造は二重チェーンテーブルキューであり、左右の2方向から要素を追加することができる.
lpush list a b c d
rpush list 1 2 3 4
redis 127.0.0.1:6379> lpush list a b c d
(integer) 4
redis 127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
redis 127.0.0.1:6379> rpush list 1 2 3 4
(integer) 8
redis 127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "1"
6) "2"
7) "3"
8) "4"
redis 127.0.0.1:6379> lpop list
"d"
redis 127.0.0.1:6379> lrange list 0 -1
1) "c"
2) "b"
3) "a"
4) "1"
5) "2"
6) "3"
7) "4"
redis 127.0.0.1:6379>
4. Set
Setは無秩序で、繰り返してはいけない.
5. SortedSet(zset)
zsetは順番があって、繰り返してはいけません
ランキングに適しており、ソートにはスコア属性が必要です.
score memberは複数あります)
zincrby zset score member
その他のコマンド
keyの有効期限の設定(単位:秒)
expire key second
残り時間の表示(-2:存在しません、-1:永続化され、正数は残りの時間を表します)
ttl key
有効期限のクリア(永続化、成功は1、失敗は0)
persist key
キーの削除
del key
存在するか否かを判断する(存在は戻り1、存在しないは戻り0)
exists key
データベースを選択します.デフォルトは0番です.
select 0
redis持続化スキーム
redisのデータはすべてメモリの中に置いて、もし機械が切るならば、メモリのデータは失うことができて、そのため持続化をしなければならなくて、メモリの中のデータをディスクに保存して、次回起動する時データをメモリの中に回復することができます.
redis永続化には2つの方法がある(デフォルトではRDBがオン)
1.RDBスナップショット形式で現在時刻のデータを定期的にディスクに保存するとdumpが発生する.rdbファイル
特徴:データの損失が存在して、性能はわりに良くて、データのバックアップ
2.AOF(append only file)redisに対するすべての操作コマンドをaofファイルに記録し、データを復元するには再実行するだけでよい
特徴:毎秒保存して、データは比較的に完備して、性能を消耗します
2つの永続化スキームを同時に開始すると、AOFの永続化シナリオに従ってデータが復元されます.