NoSQLデータベースのRedisデータベース管理(Redisの共通コマンドおよび高度なアプリケーション)


一.Redis共通コマンド
Redisは、Linux端末で使用できるデータベースおよびさまざまなデータベース・タイプを操作する豊富なコマンドを提供します.
a.キー値関連コマンド
b.サーバ関連命令
1.キー値関連コマンド
Keys:与えられたpatternを満たすすべてのkeyを返す
redis 127.0.0.1:6379> keys *
1) "myzset2"
2) "myzset3"
3) "mylist"
4) "myset2"
5) "myset3"
6) "myset4"
7) "list1"
redis 127.0.0.1:6379> keys my*
1) "myzset2"
2) "myzset3"
3) "mylist"
4) "myset2"
5) "myset3"
6) "myset4" 

exists:キーが存在するかどうかを確認します.
結果として,nameキーは存在せず,ageキーは存在する.
redis 127.0.0.1:6379> exists name
(integer) 0
redis 127.0.0.1:6379> exists age
(integer) 1
del:keyを削除
redis 127.0.0.1:6379> del age
(integer) 1
redis 127.0.0.1:6379> exists age
(integer) 0
expire:keyの有効期限を設定します.
次の例では、addrというkeyの有効期限を10秒に設定し、-1でこの値が期限切れであることを示すまでttlを使用して有効時間を取得します.
redis 127.0.0.1:6379> expire addr 10
(integer) 1
redis 127.0.0.1:6379> ttl addr
(integer) 8
redis 127.0.0.1:6379> ttl addr
(integer) 1
redis 127.0.0.1:6379> ttl addr
(integer) -1  //  addr    
redis 127.0.0.1:6379> get addr
(nil)
redis 127.0.0.1:6379> exists addr
(integer) 0
move:現在のデータベースのkeyを他のデータベースに移行します.
データベースは0から15で、select 0は0番のデータベースを選択することを示します.
redis 127.0.0.1:6379> select 0
OK
redis 127.0.0.1:6379> set age 30
OK
redis 127.0.0.1:6379> get age
"30"
redis 127.0.0.1:6379> move age 1  // age 0     1   
(integer) 1
redis 127.0.0.1:6379> get age
(nil)
redis 127.0.0.1:6379[1]> select 1
OK
redis 127.0.0.1:6379[1]> get age
"30"
redis 127.0.0.1:6379[1]> select 0
OK
redis 127.0.0.1:6379> exists age
(integer) 0 
persist:所与のkeyの期限切れを削除
redis 127.0.0.1:6379> expire age 300
(integer) 1
redis 127.0.0.1:6379> ttl age
(integer) 294
redis 127.0.0.1:6379> persist age
(integer) 1
redis 127.0.0.1:6379> ttl age
(integer) -1  //-1         
randomkey:key空間の1つのkeyをランダムに返します.
redis 127.0.0.1:6379> randomkey
"mylist7"
redis 127.0.0.1:6379> randomkey
"mylist5"
rename:keyの名前を変更します.
redis 127.0.0.1:6379> keys *
1) "age"
redis 127.0.0.1:6379> rename age age_new
OK
redis 127.0.0.1:6379> keys *
1) "age_new"
type:戻り値のタイプ.
redis 127.0.0.1:6379> type addr
string
redis 127.0.0.1:6379> type myzset2
zset
redis 127.0.0.1:6379> type mylist
list

2.サーバ関連コマンド
ping:接続が生存しているかどうかをテストします.
redis 127.0.0.1:6379> ping
PONG
//        ,  redis   
redis 127.0.0.1:6379> ping
Could not connect to Redis at 127.0.0.1:6379:Connection refused
//        ,  redis   
redis 127.0.0.1:6379> ping
PONG

最初のpingの場合、この接続が正常であることを示します.2番目のpingの前にredisサーバを停止すると、pingは失敗します.3番目のpingの前にredisサーバを起動すると、pingは成功します.
echo:コマンドラインにいくつかの内容を印刷します.
redis 127.0.0.1:6379> echo lamp
"lamp"

select:データベースを選択します.Redisデータベース番号は0~15で、データへのアクセスのために任意のデータベースを選択できます.
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> select 16
(error) ERR invalid DB index 
redis 127.0.0.1:6379[16]> 

16を選択すると、16という番号のこのデータベースがないことをエラーで報告します.
quit:接続を終了します.
redis 127.0.0.1:6379> quit
[root@localhost redis-2.2.12]#

dbsize:現在のデータベースのkeyの数を返します.
redis 127.0.0.1:6379> dbsize
(integer) 18

結果は、このライブラリに18 keyがあることを示します.
info:サーバの情報と統計を取得します.
redis 127.0.0.1:6379> info
redis_version:2.2.12
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:32
multiplexing_api:epoll
process_id:28480
uptime_in_seconds:2515
uptime_in_days:0
.
.
.
redis 127.0.0.1:6379> 

config get:受信したリクエストをリアルタイムでダンプします.
redis 127.0.0.1:6379> config get dir
1) "dir"
2) "/root/4setup/redis-2.2.12"
redis 127.0.0.1:6379> 

この例ではdirというパラメータ構成の値を取得し、すべてのパラメータデータの構成値を取得するのも簡単であれば、「config get*」を実行するだけですべての値を表示できます.
flushdb:現在選択されているデータベースのすべてのkeyを削除します.
redis 127.0.0.1:6379> dbsize
(integer) 18
redis 127.0.0.1:6379> flushdb
OK
redis 127.0.0.1:6379> dbsize
(integer) 0

この例では、0番データベースのkeyをすべてクリアします.
flushall:すべてのデータベースのすべてのkeyを削除します.
redis 127.0.0.1:6379[1]> dbsize
(integer) 1
redis 127.0.0.1:6379> select 0
OK
redis 127.0.0.1:6379> flushall
OK
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> dbsize
(integer) 0
redis 127.0.0.1:6379[1]> keys *
(empty list or set)
redis 127.0.0.1:6379[1]> select 0
OK
redis 127.0.0.1:6379> keys * 
(empty list or set) 

この例では、まず1番のデータベースにkeyがあることを確認し、0番のライブラリに切り替えてflushallコマンドを実行すると、1番のライブラリのkeyも正常に動作していると消去されます.
 
二.Redisの高度な機能
1.安全性
クライアント接続後に他の指定を行う前に使用するパスワードを設定します.
警告:redisはかなり速いので、比較的良いサーバの下で、外部のユーザーが1秒に150 K回のパスワードを試してみることができます.これは、暴力的な解読を防ぐために非常に強力なパスワードを指定する必要があることを意味します.
[root@localhost ~]# vi /usr/local/redis/etc/redis.conf

コンフィギュレーション・ファイルの次のコンフィギュレーション・アイテムを変更します.
#requirepass foobared
requirepass beijing

接続のパスワードをbeijingに設定しました.
サービスの再起動
[root@localhost ~]# pkill redis-server
[root@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
[root@localhost ~]# /usr/local/redis/bin/redis-cli
redis 127.0.0.1:6379> keys *
(error) ERR operation not permitted
redis 127.0.0.1:6379> auth beijing
OK
redis 127.0.0.1:6379> keys *
1) "name"
redis 127.0.0.1:6379> exit

[root@localhost ~]# /usr/local/redis/bin/redis-cli -a beijing
redis 127.0.0.1:6379> keys *
1) "name"

 
2.マスターコピー
Redisマスターのレプリケーション構成と使用は非常に簡単です.プライマリ・スレーブ・レプリケーションにより、複数のslave serverがmaster serverと同じデータベース・コピーを持つことができます.
1).Redisマスターコピーの特徴:
a.Masterは複数のslaveを持つことができる
b.複数のslaveは同じマスターに接続できるほか、他のslaveに接続できる
c.プライマリ・スレーブ・レプリケーションはmasterをブロックしません.データを同期するとき、masterはclientリクエストの処理を継続できます.
d.システムの伸縮性の向上
2).Redisマスターコピープロセス:
a.SlaveはMasterと接続しsync同期コマンドを送信する
b.Masterはバックグラウンドプロセスを開始し、データベーススナップショットをファイルに保存するとともに、Masterメインプロセスは新しい書き込みコマンドの収集とキャッシュを開始する
c.バックグラウンドの保存が完了したら、このファイルをslaveに送信する
d.Slaveこのファイルをハードディスクに保存する
3).プライマリ・スレーブ・サーバの構成
slaveサーバの構成は簡単です.slaveのプロファイルに次の構成を追加するだけです.
slaveof 192.168.1.1 6379 #  master ip   

masterauth beijing #       
[root@localhost ~]# vi /usr/local/redis/etc/redis.conf
//     slaveof <maserip> <masterport>、masterauth <master-password>
[root@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
[root@localhost ~]# /usr/local/redis/bin/redis-cli -a beijing
redis 127.0.0.1:6379> keys *
(empty list or set)

構成が完了すると、Masterでキーを設定すると、Slaverデータベースにもプライマリ・セカンダリ・レプリケーションが成功したことを示します.
プライマリ・データベースにキーのペアを設定すると
redis 127.0.0.1:6379> set name master
OK
redis 127.0.0.1:6379> 

データベースからこのキーを取る
redis 127.0.0.1:6379> get name
"master"
redis 127.0.0.1:6379> 

私たちはどのようにしてどれが主でどれが従なのかを判断しますか?私たちはinfoを呼び出すだけで主従情報を得ることができます.私たちはライブラリからinfoを実行します.
redis 127.0.0.1:6379> info
role:slave
master_host:localhost
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
db0:key=1,expires=0
redis 127.0.0.1:6379> 

中のroleにはMasterかSlaveサーバーかが表示されます.master_link_statusの値はupでMasterサーバに接続していることを示します.
 
説明:本文は私のネット上でLAMP兄弟連李捷先生の《NoSQLデータベースのRedisデータベース管理》の学習ノートを勉強します.