ホームページ  >  記事  >  php教程  >  Redis の使用に関する詳細なチュートリアル

Redis の使用に関する詳細なチュートリアル

WBOY
WBOYオリジナル
2016-06-16 08:39:29977ブラウズ

1. Redis の基本部分:

1. Redis の導入とインストールは mysql よりも 10 倍以上高速です

***********************redis が適用される機会*******************

1.最新のNデータを取得する操作

2. ランキングアプリ、TOP N を取る

3. 正確な有効期限が必要なアプリケーション

4. カウンターアプリケーション

5. 一定期間内のすべてのデータ重複排除値を取得するための Uniq 操作

6. リアルタイム システム、スパム対策システム 7. Pub/Sub リアルタイム メッセージング システムを構築します

7.Pub/Sub はリアルタイムメッセージングシステムを構築します 8.キューシステムを構築します

9. キャッシング

==============================================

SET 操作は 1 秒あたり 110,000 回実行され、GET 操作は 1 秒あたり 81,000 回実行されます。サーバー構成は次のとおりです。

Linux 2.6、Xeon X3320 2.5Ghz。

stackoverflow Web サイトは Redis をキャッシュ サーバーとして使用します。

データはハードディスクにも書き込まれます。したがって、データは安全です (突然の停電を除き、サービスの再起動は dump.rdb ファイルに書き込まれます)

1. インストール:

tar zxvf redis-2.6.9.tar.gz

cd redis-2.6.9

作る

cd src && make install

2. 設定ファイルの場所を移動します (管理を容易にするため)

cd /usr/local/

mkdir -p /usr/local/redis/bin

mkdir -p /usr/local/redis/etc

mv /lamp/redis-2.6.9/redis.conf /usr/local/redis/etc

cd /lamp/redis-2.6.9/src

mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

3. 設定ファイルを変更します

vi /usr/local/redis/etc/redis.conf

1. daemonize no の no を yes に変更します (yes はバックグラウンドでの実行を意味します)

4. 開始/ランダム開始:

cd /usr/local/redis/bin

./redis-server /usr/local/redis/etc/redis.conf#redisを起動し、設定ファイルを指定します。

#vi /etc/rc.local #ランダム起動を設定します。

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

5. 起動が成功したかどうかを確認します

ps -ef redis

netstat -tunpl | grep 6379# ポートが占有されているかどうかを確認します。

6. クライアントの開始/終了

cd /usr/local/redis/bin

./redis-cli#Enter

やめる#やめる

7. Redis を閉じます

pkill redis-server#Close

./redis-cli shutdown#Close

************************************Redis セキュリティ********* ***************************

Redis のセキュリティ???(以下の 4 つの方法による)

1. ACL を使用してセキュリティを制御します。

2. 次の設定行を redis.conf 設定ファイルに追加して、redis を単一のインターフェイスにバインドします (ただし、このネットワーク カードからのデータを受け入れるだけではありません)。

バインド 127.0.0.1

3. Redis に長いパスワードを追加します (覚えておく必要はありません)

4. redis.conf 設定で認証機能を有効にします。

5.SSL プロキシ

6. 指定されたコマンドを無効にします。

***************************************** Redis 構成 ***** ** ***************************************

デーモン化 バックグラウンドで実行する必要がある場合は、この項目を [はい] に変更します

pidfile 複数の PID のアドレスを構成します。デフォルトは /var/run/redis.pid

です。

bind バインド IP、設定後は、この IP からのリクエストのみを受け入れます

ポート リスニング ポート、デフォルトは 6379

timeout クライアント接続時のタイムアウト時間を秒単位で設定します

ログレベルは、デバッグ、詳細、通知、警告の 4 つのレベルに分かれています

logfile ログファイルアドレスを設定します

databases データベースの数を設定します。デフォルトのデータベースは 0

です。

save redis によるデータベースミラーリングの頻度を設定します

rdbcompression イメージバックアップ時に圧縮を行うかどうか

Dbfilename イメージバックアップファイルのファイル名

データベースミラーバックアップのディレクトリファイル配置パス

Slaveof データベースを他のデータベースのスレーブ データベースとして設定します

マスターデータベース接続には Masterauth パスワードの検証が必要です

Requirepass ログイン時に必要なパスワードを設定します

Maxclients は同時に接続するクライアントの数を制限します

Maxmemory は、redis が使用できる最大メモリを設定します

Appendonly 追加のみモードをオンにします

それについては以下でご覧いただけます:

Appendfsync は、appendonly.aof ファイルの同期頻度を設定します

vm-enabled 仮想メモリのサポートを有効にするかどうか

vm-swap-file は仮想メモリのスワップ ファイル パスを設定します

vm-max-memory は、redis によって使用される最大物理メモリ サイズを設定します

vm-page-size は仮想メモリのページ サイズを設定します

vm-pages はスワップ ファイル内の総ページ数を設定します

vm-max-threads は、VM IO によって同時に使用されるスレッドの数を設定します

Glueoutputbuf は小さな出力バッファをまとめて保存します

hash-max-zipmap-entries ハッシュのクリティカル値を設定します

アクティブ再ハッシュ

********************************************** ***** ************************

5 つのデータ型: 文字列、ハッシュ、リンク リスト、セット、順序付きセット。

サポート: プッシュ/ポップ、追加/削除、交差、結合、差分、並べ替え。

redismysql

データはハードディスクにも書き込まれます。したがって、データは安全です (突然の停電を除き、サービスの再起動は dump.rdb ファイルに書き込まれます)

********************************************** ***** ************************

select num#Select library、デフォルトは 0 ライブラリ、合計 16 ライブラリ

auth liweijie#許可されたユーザーに必要なパスワード (パスワードは redis.conf で設定されたパスワードです)

flushdb#データベースをクリアします。

文字列(文字列)型:

set name lijie#キー名の値を lijie に設定します

get name#name の値を取得します。

keys *#すべてのキーをクエリします。

setnx name liweijie#キーがすでに存在する場合は、上書きを防ぐために 0 を返し、更新しません。

setex ヘアカラー 10 赤 #設定されたキー値の有効期間は 10 秒です。

setrange email 6 Lampbre.com#置換キーの値は 6 文字目から Lampbre.com に変更されます

mset name1 Li Dawei name2 Li Xiaowei #複数のキーの値を設定します。

msetnxname1 Zhang San name3 Li Si# キーが存在するかどうかを判断し、存在しない場合は設定し、設定されていない場合は 0 を返します

mget name1 name2 name3#複数のキーの値を一度に取得します。

getset name1 Tom#キー値をリセットし、古いキー値を返します。

getrange email 6 18# 6 番目から 18 番目までの文字から始まる電子メール キーの値をインターセプトします。

incr uid#は毎回1ずつインクリメントします(キー内のuidが存在しない場合は、それを設定して0から開始します。以下同様)

incrby uid 5# は毎回 5 ずつ増加します

incrby uid -5# 毎回 5 ずつ減少します

decr uid #毎回 1 ずつ減少します

decrby uid 5# は毎回 5 ずつ減少します

appendname1 @126.com#name1 の値に文字列 @126.com を追加します

strlenname1#キー name1 の値の長さを返します。

********************************************** ***** ****************************

ハッシュ (ハッシュ) タイプ:

hset user:001 name liweijie#Hash は、ユーザー user:001 の name キー値を liweijie に設定します

hset user:001 age 21#同様に、年齢キー値 21 を追加します

hsetnx user:001 age 22# 上記と同じですが、キーが存在するかどうかを確認します。存在しない場合は作成します。

hmset user:002 name liweijie2 age 26 sex 1#複数のキーの値を同時に設定します。

hget user:001 name#Hash は、ユーザー user:001 の名前キーの値を取得します。

hget user:001 age #上記と同じ。

hmget user:001 name age sex#指定された複数のキーの値を取得します。

hgetall user:001#すべてのキーの値を取得します。

hincrbyuser:001 age -8#指定された値を指定されたキーに追加します。

hexists user:001 sex#指定されたキー値が存在するかどうかを確認します。

hlen user:001#指定されたハッシュのキー/フィールドの数を返します。

hdel user:001 sex#指定された (user:001) ハッシュの指定されたフィールドまたはキー値を削除します。

hkeys user:003#ハッシュ内のすべてのフィールドまたはキー値を返します。

********************************************** ***** ************************

リスト (リンク リスト) の種類と操作 (スタックまたはキュー):

lpush mylist "world"#先頭から文字列を挿入

lpush mylist "hello"#同上

lrange mylist 0 -1#[1) "hello" 2) "world" のように 0 から最後のものまでを取得します。

マイリスト「jiejie」を#最後に挿入してください

linsert mylist before "hello" "this is linsert" #挿入位置を指定します(helloの前に挿入)。

lset mylist 0 "what"#指定された添字の値を設定および変更します。

lrem mylist 1 "hello"#値 hello を持つ要素を削除します。 (n

ltrim mylist 1 2 #テーブル内の添字 1/2 を持つ要素を予約します。

lpop mylist# 先頭要素をポップして戻ります。

rpop mylist# 末尾要素をポップして戻ります。

rpoplpush mylist mylist2 #mylist の末尾からポップし、mylist2 の先頭に挿入します。

lindex mylist 0#テーブル添字 0 の要素値を取得します。

llen mylist#テーブル要素の数を返します (count($arr ) と同等)。

********************************************** ***** ************************

設定の種類と操作(友達推薦、ブログ、タグ機能):

smembers myset#myset コレクション内のすべての要素の値を表示します。

sadd myset "hello"#値 hello を mysets コレクションに追加します

srem myset "hello"#myset コレクション内の hello という名前の要素を削除します。

spop myset #ランダムにポップアップし、mysets 内の要素を返します。

sdiff myset2 myset3#myset2 と myset3 の差を返します (myset2 に依存します)。

sdiffstore myset4 myset2 myset3#myset2 と myset3 の差を返し、myset4 に格納します。

sinter myset2 myset3#myset2 と myset3 の共通部分を返します。

sinterstore myset5 myset2 myset3#myset2 と myset3 の共通部分を返し、myset5 に格納します。

sunion myset2 myset3# 結合を検索します (重複を削除します)

sunionstore myset6 myset2 myset3# 共用体を見つけて myset6 に保存します。

smove myset2 myset3 "three"#myset2 の 3 つを myset3 に移動します。

scard myset2#要素の数を返します。

sismember myset2 "one"# 要素 one が myset2 セット内にあるかどうかを判断します (is_array() と同等)。

srandmember myset2# myset2 コレクション内の要素をランダムに返しますが、削除しません (array_rand() と同等)。

********************************************** ***** ************************

ソートセット (順序付きセット) のタイプと操作 (スコアによってソート):

zadd myzset 1 "one"#要素 1 をシーケンス 1 に追加します

zadd myzset 2 "two"# 上記と同じ。

zadd myzset 3 "two"# 更新順序が2の値に相当

zrange myzset 0 -1 withscores#すべての要素を表示し、並べ替えます (デフォルトは昇順)。

zrem myzset "two"#2 つ削除

zincrby myzset 2 "two"#two のシーケンス値に 2 を加算します

zrank myzset "two"# セット内の要素のインデックス添字値を返します。

zrevrank myzset two#要素を反転し、新しい添字値を返します。

zrevrange myzset 0 -1 withscores#逆順 (降順でのソートと同等)

zrangebyscore myzset 1 10 withscores#要素を 1 ~ 10 の順序で返します (ページ分割可能)。

zcount myzset 1 10 #要素の数を 1 ~ 10 の順序で返します。

zcard myzset#セット内のすべての要素の数を返します。

zremrangebyrank myzset 1 2#セット内の添え字 1 ~ 2 を持つ要素を削除します。

zremrangebyscore myzset 1 10#セット内の 1 から 10 までの要素を削除します。

Redis の一般的なコマンド

キー/値関連のコマンド。

キー * #すべてクエリ

keys user*#指定された

をクエリします

exists user:001# 存在するかどうかを確認します。

del name#指定されたキーを削除します。

expire addr 10#有効期限を設定します

ttl addr#Query 有効期限

select 0 #データベースを選択

move age 1#年齢をデータベース 1 に移動します。

年齢を取得 #Get

persist age# 年齢の有効期限を削除します。

randomkey#キーをランダムに返します

名前1 名前2#キーの名前を変更

type myset#キーのタイプを返します。

ping #redis 接続が生きているかどうかをテストします。

エコーランプ#ランプを出力する

select 10#データベースを選択します。

quit/exit/crtl+C#クライアントを終了します

dbsize#ライブラリ内のキーの数を返します。

サーバー関連のコマンド:

info#redis サーバーの関連情報を表示します。

config get */loglevel #すべての/指定された構成情報を返します。

flushdb#現在のライブラリ内のすべてのキー/テーブルを削除します。

flushall#すべてのデータベースのすべてのキー/テーブルを削除します

2. Redis の高度な部分:

1. Redis セキュリティ:

1. ACL を使用してセキュリティを制御します。

2. Redis に長いパスワードを追加します

#requirepass foobared

北京パスが必要

3. redis.conf 設定で認証機能を有効にします。

方法 1: 北京を認証

方法 2: ./redis-cli -a beijing

4. 次の設定行を redis.conf 設定ファイルに追加して、redis を単一のインターフェイスにバインドします (ただし、このネットワーク カードからのデータを受け入れるだけではありません)。

バインド 127.0.0.1 (単一マシンで構成できますが、分散またはマスター/スレーブのレプリケーションでは構成しないことをお勧めします)

5.SSL プロキシ

6. 指定されたコマンドを無効にします。

2. Redis マスター/スレーブ レプリケーション:

redis はスレーブサーバーでのみ構成する必要があります:

slaveof 211.122.11.11 6379 #マスターの IP とポートを指定します

masterauth beijing#これはマスターホストのパスワードです

情報#マスター/スレーブサーバーのステータスを表示します。

3. Redis トランザクション処理:

Redis トランザクションは非常に不完全です。

4. Redis 永続化メカニズム:

1. 2 つの方法: 1. データをディスクにバックアップする (スナップショット) [スナップショット (スナップショット) もデフォルトの方法です]

2. 操作コマンドを記録する【追記専用ファイル(略称aof)方式】

1. データをディスクにバックアップします (スナップショット) [スナップショット (スナップショット) もデフォルトの方法です]

save 900 1 #900 秒以内に複数のキーが変更された場合、スナップショットの保存を開始します

save 300 10 #300 秒以内に 10 個を超えるキーが変更された場合、スナップショットが保存されます

60 10000 を節約

2. 操作コマンドを記録する【追加専用ファイル(略称aof)方式】(より安全で耐久性が高い)

appendonly はい #aof 永続化メソッドを有効にする

# appendfsync always //書き込みコマンドを受信した直後にディスクに書き込みます。最も遅いですが、完全な永続性が保証されます

appendfsync Everysec //1 秒に 1 回ディスクに書き込み、パフォーマンスと永続性の間で適切な妥協点を作ります

#appendfsync no //OS に完全に依存、最高のパフォーマンス、永続性の保証なし

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。