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 に完全に依存、最高のパフォーマンス、永続性の保証なし