1. Redis の基本部分:
1. Redis の導入とインストールは mysql よりも 10 倍以上高速です
******************redis 該当する機会******************
1.最新のNデータを取得する操作
2.ランキングアプリ、TOPN獲得
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 構成 ******* ** *************************************
daemonize バックグラウンドで実行する必要がある場合は、この項目を [はい] に変更します
pidfile 複数の PID のアドレスを設定します。デフォルトは /var/run/redis.pid です。
bind バインド IP、設定後、この IP からのリクエストのみを受け入れますポートリスニングポート、デフォルトは6379です
timeout クライアントが接続するときのタイムアウト時間を秒単位で設定します
ログレベルは、デバッグ、詳細、通知、警告の 4 つのレベルに分かれています
logfile ログファイルのアドレスを設定します
databases データベースの数を設定します。デフォルトのデータベースは 0 です。
save Redisによるデータベースミラーリングの頻度を設定します
rdbcompression イメージバックアップ時に圧縮を行うかどうか
Dbfilename イメージバックアップファイルのファイル名
Dir データベースミラーバックアップのファイル配置パス
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# はライブラリを選択します。デフォルトはライブラリ 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 の名前キー値を 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 から最後のものまでを取得します
rpush mylist "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の末尾からPopして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#クエリの有効期限
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 フーバード
北京パスが必要
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 に完全に依存、最高のパフォーマンス、永続性の保証なし