NoSQL-Redisサービス

51290 ワード

NoSQL-Redis
  • 一、概要
  • 二、主流NoSQLソフトウェア
  • 三、Redisサービス
  • 3.1、Redis紹介
  • 3.2、Redisサービスのインストール
  • 3.3、Redis初期構成
  • 3.4、管理Redisサービス
  • 3.5、接続Redisサービス
  • 3.6、Redis共通コマンド
  • 3.6.1、コマンドset、mset、get、mget
  • set key名key値
  • mset key名リスト
  • get key名
  • mget
  • 3.6.2、コマンドkeys、type、exists、del
  • keys
  • type key名
  • del key名
  • exists key名
  • 3.6.3、コマンドttl、expire、move、flushdb、flushall、save、shutdown、select
  • ttl、expire
  • move key名庫番号
  • selectデータベース番号0-15
  • flushdb
  • flushall
  • save
  • shutdown
  • 3.7、プロファイル解析
  • 3.7.1、配置分類
  • 3.7.2、共通の構成項目
  • 3.7.3、IPアドレス、ポート、パスワードの変更
  • 3.7.4、メモリ管理
  • 四、配置LNMP+Redis
  • 4.1、LNMPサイト環境の導入
  • 4.1.1、インストールソースnginx、インストールphp-fpm
  • 4.1.2、サービス開始
  • 4.1.3、試験配置
  • 4.2、配置PHPサポートRedis
  • 4.2.1、redisモジュールを提供するソフトウェアをインストール
  • 4.2.2、redisモジュールのロード
  • 4.3、テスト構成
  • 4.3.1、モジュールの表示
  • 4.3.2、アクセスデータのphpスクリプトを作成してスクリプトにアクセス
  • 4.3.2、データベースサーバー本体でデータを表示
  • 一、概説
    NoSQL(Not Only SQL)
  • データベースのみならず
  • 汎指非関係型データベース
  • 予めデータ記憶構造を定義する必要はない
  • 各レコードには、異なるデータ型およびフィールド数
  • があり得る
    二、主流のNoSQLソフトウェア
  • Memcached
  • Redis
  • MongoDB
  • CouchDB
  • Neo4j
  • FlockDB

  • 三、Redisサービス
    3.1、Redis紹介
  • Remote Dictionary Server(リモートディクショナリサーバ)
  • 高性能(key/Value)分散メモリデータベース
  • データ永続化をサポート(定期的にメモリのデータをハードディスクに格納)
  • 複数種類のデータ型string、list、hash...
  • をサポート
  • master-salveモードデータバックアップをサポート
  • オープンソースソフトウェア
  • 3.2、Redisサービスのインストール
    ソースパッケージredis-4.0.8を準備する.tar.gz
  • ソースコードコンパイルインストール
  • [root@client ~]# rpm -q gcc
    [root@client ~]# yum -y install gcc
    [root@client ~]# tar -zxf redis-4.0.8.tar.gz 
    [root@client ~]# cd redis-4.0.8/
    [root@client redis-4.0.8]# make && make install
    

    3.3、Redis初期構成
  • 初期化
  • デフォルト構成を使用
  • [root@client redis-4.0.8]# ./utils/install_server.sh 
    Welcome to the redis service installer
    This script will help you easily set up a running redis server
    
    Please select the redis port for this instance: [6379] 
    Selecting default: 6379
    Please select the redis config file name [/etc/redis/6379.conf] 
    Selected default - /etc/redis/6379.conf
    Please select the redis log file name [/var/log/redis_6379.log] 
    Selected default - /var/log/redis_6379.log
    Please select the data directory for this instance [/var/lib/redis/6379] 
    Selected default - /var/lib/redis/6379
    Please select the redis executable path [/usr/local/bin/redis-server] 
    Selected config:
    Port           : 6379
    Config file    : /etc/redis/6379.conf
    Log file       : /var/log/redis_6379.log
    Data dir       : /var/lib/redis/6379
    Executable     : /usr/local/bin/redis-server
    Cli Executable : /usr/local/bin/redis-cli
    Is this ok? Then press ENTER to go on or Ctrl-C to abort.
    Copied /tmp/6379.conf => /etc/init.d/redis_6379
    Installing service...
    Successfully added to chkconfig!
    Successfully added to runlevels 345!
    Starting Redis server...
    Installation successful!
    
    [root@client redis-4.0.8]# netstat -utnlp |grep 6379
    tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      5140/redis-server 1 
    
  • ポート-6379
  • メインプロファイル——/etc/redis/6379.conf
  • ログファイル——/var/log/redis_6379.log
  • データベースディレクトリ--/var/lib/redis/6379
  • サービス起動プログラム--/usr/local/bin/redis-server
  • コマンドライン接続コマンド--/usr/local/bin/redis-cli
  • 3.4、Redisサービスの管理
  • サービス停止
  • [root@client ~]# /etc/init.d/redis_6379 stop
    Stopping ...
    Redis stopped
    
  • サービス開始
  • [root@client ~]# /etc/init.d/redis_6379 start
    Starting Redis server...
    
  • プロセスの表示
  • [root@client ~]# ps -C redis-server
       PID TTY          TIME CMD
      5157 ?        00:00:00 redis-server
    
  • ポートの表示
  • [root@client ~]# netstat -utnlp |grep 6379
    tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      5157/redis-server 1 
    

    3.5.Redisサービスへの接続
    [root@client redis-4.0.8]# redis-cli
    127.0.0.1:6379> ping
    PONG
    127.0.0.1:6379> set name abc	//   
    OK
    127.0.0.1:6379> get name		//   
    "abc"
    127.0.0.1:6379> exit			
    [root@client redis-4.0.8]# 
    

    3.6、Redis常用コマンド
    3.6.1、コマンドset、mset、get、mget
    set key名key値
  • 個々のデータを格納
  • 127.0.0.1:6379> set name abc	//   
    OK
    127.0.0.1:6379> get name		//   
    "abc"
    

    mset key名リスト
  • 複数のデータを格納
  • 127.0.0.1:6379> MSET age 19 sex boy
    OK
    

    get key名
  • 単一データ取得
  • 127.0.0.1:6379> get name 
    "abc"
    

    mget
  • 複数のデータを取得
  • 127.0.0.1:6379> MGET age sex
    1) "19"
    2) "boy"
    

    3.6.2、コマンドkeys、type、exists、del
    keys
  • すべての変数keys*
  • を表示
    127.0.0.1:6379> keys *
    1) "sex"
    2) "name"
    3) "age"
    
  • 表示指定変数
  • 127.0.0.1:6379> keys ???	//       
    1) "sex"
    2) "age"
    127.0.0.1:6379> keys ????	//       
    1) "name"
    127.0.0.1:6379> keys a*		//   a   
    1) "age"
    

    type key名
  • keyタイプの表示
  • 127.0.0.1:6379> type age	//  set            
    string
    

    del key名
  • 指定したkeyを削除
  • 127.0.0.1:6379> del age
    (integer) 1
    

    exists key名
  • key名が存在するかどうかをテスト
  • 127.0.0.1:6379> EXISTS age	//        0
    (integer) 0
    127.0.0.1:6379> EXISTS sex 	//       1
    (integer) 1
    

    3.6.3、コマンドttl、expire、move、flushdb、flushall、save、shutdown、select
    ttl、expire
  • key生存時間を表示する-ttl key名
  • key有効時間の設定-expire key名数
  • 127.0.0.1:6379> TTL sex		//    -1,        
    (integer) -1
    127.0.0.1:6379> EXPIRE sex 20	//         20 
    (integer) 1
    127.0.0.1:6379> TTL sex		//  14   
    (integer) 14
    127.0.0.1:6379> ttl sex		//    -2       
    (integer) -2
    127.0.0.1:6379> EXISTS sex	//       
    (integer) 0
    

    move key名ライブラリ番号
  • 指定ライブラリへキーを移動
  • 127.0.0.1:6379> MOVE name 1		//   name   1  
    (integer) 1
    

    selectデータベース番号0-15
  • 切替ライブラリ
  • 127.0.0.1:6379> select 1	//   1  
    OK
    127.0.0.1:6379[1]> keys *		//    
    1) "name"
    

    flushdb
  • ライブラリのすべてのキーを削除
  • 127.0.0.1:6379[1]> FLUSHDB
    OK
    127.0.0.1:6379[1]> keys *
    (empty list or set)
    

    flushall
  • メモリ内のすべてのキーを削除
  • 127.0.0.1:6379[1]> FLUSHALL
    OK
    

    save
  • すべてのキーをハードディスクに保存
  • 127.0.0.1:6379[1]> SAVE
    OK
    

    shutdown
  • サービス停止
  • 127.0.0.1:6379[1]> SHUTDOWN
    not connected> exit
    [root@client redis-4.0.8]# netstat -utnlp | grep redis-server	//      
    [root@client redis-4.0.8]# 
    [root@client ~]# /etc/init.d/redis_6379  start
    Starting Redis server...
    [root@client ~]# netstat -utnlp | grep redis-server
    tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      1570/redis-server 1
    

    3.7、構成ファイルの解析
    3.7.1、構成分類
    名前
    説明
    NETWORK
    ネットワーク
    GENERAL
    標準
    SNAPSHOTTING
    スナップショット
    REPLICATION
    コピー
    SECURITY
    安全
    CLIENTS
    クライアント
    MEMORY MANAGEMENT
    メモリ管理
    3.7.2、よく使う構成項目
  • port 6379
  • ポート
  • bind 127.0.0.1
  • IPアドレス
  • daemonize yes
  • デーモン方式運転
  • databases 16
  • データベース個数
  • logfile/var/log/redis_6379.log
  • ログファイル
  • maxclients 10000
  • 同時接続数
  • dir/var/lib/redis/6379
  • データベースディレクトリ

  • 3.7.3、IPアドレス、ポート、パスワードの修正
    [root@client ~]# sed -n '70p;93p;501p' /etc/redis/6379.conf	//   
    bind 127.0.0.1
    port 6379
    # requirepass foobared
    [root@client ~]# vim /etc/redis/6379.conf 
    bind 192.168.4.50
    port 6350
    requirepass 123456
    
        
    [root@client ~]# /etc/init.d/redis_6379 stop	
    Stopping ...
    Redis stopped
    [root@client ~]# /etc/init.d/redis_6379 start
    Starting Redis server...
    [root@client ~]# netstat -utnlp | grep redis
    tcp        0      0 192.168.4.50:6350       0.0.0.0:*               LISTEN      1702/redis-server 1
    
    

    サービス接続時にIPアドレスとポートを指定する必要があります
    [root@client ~]# redis-cli -h 192.168.4.50 -p 6350
    192.168.4.50:6350> ping
    (error) NOAUTH Authentication required.
    192.168.4.50:6350> AUTH 123456	//    
    OK
    192.168.4.50:6350> ping
    PONG
    
    [root@client ~]# redis-cli -h 192.168.4.50 -p 6350 -a 123456
    192.168.4.50:6350> ping
    PONG
    

    3.7.4、メモリ管理
    四、LNMP+Redisの配置
    2台の仮想マシン
    4.1.LNMPウェブサイト環境の配置
    4.1.1、インストールソースnginx、インストールphp-fpm
    [root@lnmp ~]# yum -y install gcc pcre-devel zlib-devel
    [root@lnmp ~]# tar -zxf nginx-1.12.2.tar.gz 
    [root@lnmp ~]# ls
    [root@lnmp ~]# cd nginx-1.12.2/
    [root@lnmp nginx-1.12.2]# 
    [root@lnmp nginx-1.12.2]# ./configure 
    [root@lnmp nginx-1.12.2]# make && make install
    
    [root@lnmp nginx-1.12.2]# yum -y install php-fpm
    
    [root@lnmp ~]# vim +65 /usr/local/nginx/conf/nginx.conf
     location ~ \.php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                include        fastcgi.conf;
            }
    

    4.1.2、サービスを開始する
    [root@lnmp ~]# /usr/local/nginx/sbin/nginx -t	//    
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    [root@lnmp ~]# /usr/local/nginx/sbin/nginx 
    [root@lnmp ~]# netstat -utnlp | grep 80
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4022/nginx: master 
    
    [root@lnmp ~]# systemctl start php-fpm.service 
    [root@lnmp ~]# netstat -utnlp | grep 9000
    tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      4090/php-fpm: maste
    

    4.1.3、テスト構成
    [root@lnmp ~]# vim /usr/local/nginx/html/test.php
    <?php
        echo  "l love china" ;
    ?>
    
    [root@lnmp ~]# curl http://127.0.0.1/test.php
    l love china
    

    4.2、配置PHPはRedisをサポートする
    4.2.1、redisモジュールを提供するソフトウェアをインストールする
  • インストールredisサービス
  • [root@lnmp ~]# tar -zxf redis-4.0.8.tar.gz 
    [root@lnmp ~]# cd redis-4.0.8/
    [root@lnmp redis-4.0.8]# make && make install
    [root@lnmp redis-4.0.8]# ./utils/install_server.sh
    
  • 構成サポートRedis
  • [root@lnmp ~]# yum -y  install php  php-devel automake autocon
    [root@lnmp ~]# tar -zxf php-redis-2.2.4.tar.gz 
    [root@lnmp ~]# ls
    [root@lnmp ~]# cd phpredis-2.2.4/
    [root@lnmp phpredis-2.2.4]# phpize 	//      php-config configure  
    Configuring for:
    PHP Api Version:         20100412
    Zend Module Api No:      20100525
    Zend Extension Api No:   220100525
    
    [root@lnmp phpredis-2.2.4]# ./configure  --with-php-config=/usr/bin/php-config
    [root@lnmp phpredis-2.2.4]# make 
    [root@lnmp phpredis-2.2.4]# make install
    Installing shared extensions:     /usr/lib64/php/modules/
    
    [root@lnmp phpredis-2.2.4]# ls /usr/lib64/php/modules/
    curl.so  fileinfo.so  json.so  phar.so  redis.so  zip.so
    

    4.2.2、redisモジュールをロードする
    [root@lnmp ~]# vim +728 /etc/php.ini
    extension_dir = "/usr/lib64/php/modules/"
    ; On windows:
    extension = "redis.so"
    [root@lnmp ~]# systemctl restart php-fpm.service
    

    4.3、テスト構成
    4.3.1、モジュールの表示
    [root@lnmp ~]# php -m  | grep -i redis
    redis
    
    

    4.3.2.アクセスデータのphpスクリプトを作成し、スクリプトにアクセスする
    [root@lnmp ~]# vim /usr/local/nginx/html/x.php
    <?php
    $redis = new redis();
    $redis->connect("192.168.4.50","6350");
    $redis->auth("123456");
    $redis->set("school","abc");
    echo $redis->get("school");
    ?>
    
    [root@lnmp ~]# curl http://127.0.0.1/x.php
    

    4.3.2、データベースサーバーのネイティブでデータを見る
    192.168.4.50:6350> keys *
    1) "school"
    192.168.4.50:6350> get school
    "abc"