21.9-21.12 Redis紹介、インストール、持続化紹介
7110 ワード
21.09 Redis紹介 RedisはMemcachedと同様であり、k-vデータストア にも属する. Redis官网redis.io,現在の最新安定版4.0.1 は、stringに加えてhash、lists(チェーンテーブル)、sets(セット)、sorted sets(秩序セット) をサポートするvalueタイプをより多くサポートします. redisでは、フルデータ(RDB)とインクリメンタルリクエスト(aof)の2つのファイルフォーマットが使用されています. フルデータフォーマットは、メモリ内のデータをディスクに書き込むことで、次回のファイル読み込みに便利です. インクリメンタルリクエストファイルは、メモリ内のデータを操作リクエストにシーケンス化し、mysql binlogに類似したファイルを読み取りreplayしてデータを得るために使用される. redisのストレージは、メモリストレージ、ディスクストレージ、logファイルの3つの部分 に分けられる.
21.10 Redisインストール
#把
#変更
#noフロント起動、yesバックグラウンド起動
2つのカーネルパラメータは、変更する必要がない場合にデフォルトを維持します.
rc.localこの2つのパラメータを追加し、オンにすると起動できます.
Redisサービスの開始
プロセスの確認
21.11 Redis持続化前言:データはメモリに格納され、読み取りと書き込みは非常に速いが、サーバを再起動したり、サービスを再起動したりすると、データが失われる.したがって,データが重要であれば,データ持続化を実施する必要がある. Redisは、RDB(Redis DataBase)およびAOF(Append Only File) の2つの永続化方式を提供する. RDBは、簡単に言えば、redisに格納されたデータを異なる時点でスナップショットを生成し、ディスクなどのメディアに格納する.簡単に言えば、メモリのデータをミラー化し、ディスクに完全にマッピングして格納します. の記憶方式はredisである.confのsaveパラメータは、格納方法を定義します. example, # save "" save 900 1 save 300 10 save 60 10000 がこの3つの条件を満たすと、永続化ストレージ がトリガーされる.永続化を閉じるとsaveパラメータ条件をdeletedし、#save""注釈を削除する に変更する. save "" AOFは、redisが実行したすべての書き込み命令を記録し、次回のredis再起動時に、これらの書き込み命令を前から後まで繰り返し実行すれば、データ復旧を実現する角度を変えて永続化を実現しています.データは操作時間の増加に伴って増加します. は、RDBとAOFの2つの方式を同時に使用することも可能である.この場合、redisが再起動されると、AOF方式の方がデータ復旧が優先される.これは、AOF方式の方がデータ復旧の完全性が高いためである. AOFには3つの方法があります appendfsync always#は書き続け、変更するたびに と書きます. appendfsync everysec#毎秒 を書く appendfsync no#一定時間ごとに書く、最も安全ではない データ永続化の必要がなければ、RDBとAOF方式を完全に閉じることもできます.そうすると、redisはmemcacheのように純粋なメモリデータベースになります. 両者を比較し、AOF保存比較記憶は比較的安全である.
21.12 Redisデータ型
Redisデータ型-string
stringは最も簡単なタイプで、Memcachedと同じタイプで、1つのkeyはvalueに対応して、そのサポートする操作はMemcachedの操作と似ていて、その機能はもっと豊富です.バイナリを保存できるオブジェクトを設定します.
例:
#redis-cli#redisを接続するコマンド、redis汎用エントリコマンド
set単一key-valueの設定
get単一値
Redisデータ型-list
Listはチェーンテーブル構造で、主な機能はpush、pop、1つの範囲のすべての値を取得するなどです.操作中keyはチェーンテーブルの名前として理解される.
list構造を使用すると、最新のメッセージランキングなどの機能(例えば、新浪微博のTimeLine)を簡単に実現できます.
Listのもう一つのアプリケーションはメッセージキューであり、listのpush操作を利用してタスクをlistに存在させ、ワークスレッドはpop操作でタスクを取り出して実行することができる.
pushとpopは押し出し特性で、pushはk-vをlistに押して、それからpopは値を並べます
例:
# redis-cli
#lpush作用——kvを定義する
Redisデータ型-set
setは集合であり,我々の数学における集合概念と類似しており,集合の操作には削除要素を追加し,複数の集合に対して交差を求めるなどの操作がある.操作中keyは集合の名前として理解される.例えば、マイクロブログアプリケーションでは、1人のユーザーのすべての関心者を1つの集合に存在させ、そのすべてのファンを1つの集合に存在させることができる.Redisは非常に人間的に集合を求めるために交差、並列、差分などの操作を提供しているため、共通の関心、共通の好み、2度の友达などの機能を非常に容易に実現することができ、上のすべての集合操作に対して、異なるコマンドを使用して結果をクライアントに返すか、新しい集合に保存するかを選択することもできます.
set例
説明:
127.0.0.1:6379>SINTER set 1 set 2//交差同じ交差
127.0.0.1:6379>SUION set 1 set 2//並集、set 1、set 2再結合
127.0.0.1:6379>SDIFF set 1 set 2//差分セット、異なる要素
127.0.0.1:6379>SREMset 1 c//要素の削除
127.0.0.1:6379> SADD set2 a 2 b
Redisデータ型-sort set
sorted setは秩序化された集合であり、setよりも重みパラメータscoreを多くし、集合中の要素をscoreで秩序化することができる.例えば、クラス全員の成績を格納するSorted Setsであり、その集合valueは同級生の学号であり、scoreは試験の得点であり、データが集合に挿入されると、天然のソートが行われる.
ソート時にscore値は表示されません
Redisデータ型-hash
Memcachedでは、構造化された情報をhashmapにパッケージ化し、クライアントのシーケンス化後にユーザーのニックネーム、年齢、性別、積分などの文字列の値(一般的にJSON形式)として格納することが多い.
例
書式:
#HSET key value(複数要素)
21.10 Redisインストール
cd /usr/local/src/
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar zxvf redis-4.0.1.tar.gz
cd redis-4.0.1
make && make install
cp redis.conf /etc/redis.conf
vim /etc/redis.conf #
#把
daemonize no
#変更
daemonize yes
#noフロント起動、yesバックグラウンド起動
logfile "/var/log/redis.log" #
dir /data/redis/ #redis
appendonly yes # aof,aof :apendonly.aof
mkdir /data/redis
2つのカーネルパラメータは、変更する必要がない場合にデフォルトを維持します.
rc.localこの2つのパラメータを追加し、オンにすると起動できます.
sysctl vm.overcommit_memory=1
echo never > /sys/kernel/mm/transparent_hugepage/enabled
Redisサービスの開始
redis-server /etc/redis.conf
プロセスの確認
ps uax |grep redis
root 12428 0.0 0.1 145252 2168 ? Ssl 17:37 0:00 redis-server 127.0.0.1:6379
root 12457 0.0 0.0 112660 968 pts/0 R+ 17:38 0:00 grep --color=auto redis
21.11 Redis持続化
21.12 Redisデータ型
Redisデータ型-string
stringは最も簡単なタイプで、Memcachedと同じタイプで、1つのkeyはvalueに対応して、そのサポートする操作はMemcachedの操作と似ていて、その機能はもっと豊富です.バイナリを保存できるオブジェクトを設定します.
例:
#redis-cli#redisを接続するコマンド、redis汎用エントリコマンド
set単一key-valueの設定
get単一値
127.0.0.1:6379> set key1 10
OK
127.0.0.1:6379> get key1
"10"
#mset key-value
#mget
127.0.0.1:6379> mset key2 20 key3 30
OK
127.0.0.1:6379> mget key1 key2 key3
1) "10"
2) "20"
3) "30"
Redisデータ型-list
Listはチェーンテーブル構造で、主な機能はpush、pop、1つの範囲のすべての値を取得するなどです.操作中keyはチェーンテーブルの名前として理解される.
list構造を使用すると、最新のメッセージランキングなどの機能(例えば、新浪微博のTimeLine)を簡単に実現できます.
Listのもう一つのアプリケーションはメッセージキューであり、listのpush操作を利用してタスクをlistに存在させ、ワークスレッドはpop操作でタスクを取り出して実行することができる.
pushとpopは押し出し特性で、pushはk-vをlistに押して、それからpopは値を並べます
例:
# redis-cli
#lpush作用——kvを定義する
127.0.0.1:6379> LPUSH list1 111
(integer) 1
127.0.0.1:6379> LPUSH list1 222
(integer) 2
127.0.0.1:6379> LPUSH list1 333
(integer) 3
#LRANGE ,0 -1
127.0.0.1:6379> LRANGE list1 0 -1
1) "333"
2) "222"
3) "111"
#LPOP , ,list
127.0.0.1:6379> LPOP list1
"333"
127.0.0.1:6379> LRANGE list1 0 -1
1) "222"
2) "111"
Redisデータ型-set
setは集合であり,我々の数学における集合概念と類似しており,集合の操作には削除要素を追加し,複数の集合に対して交差を求めるなどの操作がある.操作中keyは集合の名前として理解される.例えば、マイクロブログアプリケーションでは、1人のユーザーのすべての関心者を1つの集合に存在させ、そのすべてのファンを1つの集合に存在させることができる.Redisは非常に人間的に集合を求めるために交差、並列、差分などの操作を提供しているため、共通の関心、共通の好み、2度の友达などの機能を非常に容易に実現することができ、上のすべての集合操作に対して、異なるコマンドを使用して結果をクライアントに返すか、新しい集合に保存するかを選択することもできます.
set例
#SADD
127.0.0.1:6379> SADD set1 1
(integer) 1
127.0.0.1:6379> SADD set1 2
(integer) 1
127.0.0.1:6379> SADD set1 3
(integer) 1
127.0.0.1:6379> SADD set1 a
(integer) 1
127.0.0.1:6379> SADD set1 b
(integer) 1
127.0.0.1:6379> SADD set2 2
(integer) 1
127.0.0.1:6379> SADD set2 3
(integer) 1
127.0.0.1:6379> SADD set2 4
(integer) 1
127.0.0.1:6379> SADD set2 a
(integer) 1
127.0.0.1:6379> SADD set2 b
(integer) 1
#SMEMBERS key
127.0.0.1:6379> SMEMBERS set1
1) "1"
2) "a"
3) "3"
4) "2"
5) "b"
#SMEMBERS key
127.0.0.1:6379> SMEMBERS set2
1) "a"
2) "4"
3) "3"
4) "2"
5) "b"
#SINTER
127.0.0.1:6379> SINTER set1 set2
1) "a"
2) "3"
3) "2"
4) "b"
#SUNION ,
127.0.0.1:6379> SUNION set1 set2
1) "1"
2) "a"
3) "2"
4) "b"
5) "4"
6) "3"
#SDIFF
127.0.0.1:6379> SDIFF set1 set2
1) "1"
#SREM
127.0.0.1:6379> SREM set1 1
(integer) 1
127.0.0.1:6379> SMEMBERS set1
1) "a"
2) "3"
3) "2"
4) "b"
説明:
127.0.0.1:6379>SINTER set 1 set 2//交差同じ交差
127.0.0.1:6379>SUION set 1 set 2//並集、set 1、set 2再結合
127.0.0.1:6379>SDIFF set 1 set 2//差分セット、異なる要素
127.0.0.1:6379>SREMset 1 c//要素の削除
127.0.0.1:6379> SADD set2 a 2 b
Redisデータ型-sort set
sorted setは秩序化された集合であり、setよりも重みパラメータscoreを多くし、集合中の要素をscoreで秩序化することができる.例えば、クラス全員の成績を格納するSorted Setsであり、その集合valueは同級生の学号であり、scoreは試験の得点であり、データが集合に挿入されると、天然のソートが行われる.
127.0.0.1:6379> ZADD set3 10 a
(integer) 1
127.0.0.1:6379> ZADD set3 20 "a-2"
(integer) 1
127.0.0.1:6379> ZADD set3 30 b
(integer) 1
127.0.0.1:6379> ZADD set3 40 b-2
(integer) 1
#
127.0.0.1:6379> ZRANGE set3 0 -1
1) "a"
2) "a-2"
3) "b"
4) "b-2"
#
127.0.0.1:6379> ZREVRANGE set3 0 -1
1) "b-2"
2) "b"
3) "a-2"
4) "a"
ソート時にscore値は表示されません
Redisデータ型-hash
Memcachedでは、構造化された情報をhashmapにパッケージ化し、クライアントのシーケンス化後にユーザーのニックネーム、年齢、性別、積分などの文字列の値(一般的にJSON形式)として格納することが多い.
例
書式:
#HSET key value(複数要素)
127.0.0.1:6379> HSET hash1 name kevin
(integer) 1
127.0.0.1:6379> HSET hash1 age 26
(integer) 1
127.0.0.1:6379> HSET hash1 job IT
(integer) 1
#HGET key value
127.0.0.1:6379> HGET hash1 name
"kevin"
127.0.0.1:6379> HGET hash1 job
"IT"
127.0.0.1:6379> HGET hash1 age
"26"
#HGETALL hash value
127.0.0.1:6379> HGETALL hash1
1) "name"
2) "kevin"
3) "age"
4) "26"
5) "job"
6) "IT"