5種類のredisの一般的な操作(データ型+キー値+サービス+セキュリティ)


[toc]
5種類のredis共通データ型操作
一、Redis常用操作(string,list)
1.1 keyが2つの異なる値を設定すると、2番目の値が1番目の値を上書きします.
[root@xavi ~]# cd /usr/local/src/redis-4.0.9
[root@xavi redis-4.0.9]# redis-cli
127.0.0.1:6379> set key1 xavi
OK
127.0.0.1:6379> set key2 xavilinux
OK
127.0.0.1:6379> set key1 linux
OK
127.0.0.1:6379> get key1
"linux"

1.2 SETNXキー値にvalueがあるかどうかを検出する直接0がある場合直接1を返さない場合、このvalueを作成する
127.0.0.1:6379> SETNX key1 aaa
(integer) 0
127.0.0.1:6379> get key1
"linux"
127.0.0.1:6379> SETNX key3 aaa
(integer) 1
127.0.0.1:6379> get key3
"aaa"

1.3 setexキーに対して有効期限を設定します.
127.0.0.1:6379> set key3 aaa ex 10
OK
127.0.0.1:6379> get key3
(nil)
127.0.0.1:6379> set key3 aaa ex 100
OK
127.0.0.1:6379> get key3
"aaa"

 set key1 aming//        
 setnx key2 aaa //  1   key2       key
 setnx key2 bbb  //  0,  key2  ,  0
 setex key3 10 1 // key3       10s,  1, key    ,      

1.4 LPUSHは値をとり、RPOPまたはLPOPは値を取り出せばその値は削除されます.
  • []lpush lista a//左側から要素
  • を追加
  • [ ] lpush lista b
  • [ ] lrange lista 0 -1
  • []lpop lista//左側から最初の要素
  • を取り出す
  • []rpush lista 1//右側から要素
  • を追加
  • []rpop lista//最初の要素
  • を右側から取り出す
    127.0.0.1:6379> LPUSH list aaa
    (integer) 1
    127.0.0.1:6379> LPush list bbb
    (integer) 2
    127.0.0.1:6379> LPUSH list ccc
    (integer) 3
    127.0.0.1:6379> LPUSH list ddd
    (integer) 4
    
    127.0.0.1:6379> LRANGE list 0 -1
    1) "ddd"
    2) "ccc"
    3) "bbb"
    4) "aaa"
    
    127.0.0.1:6379> RPOP list
    "aaa"
    127.0.0.1:6379> lpop list
    "ddd"

    二、Redis常用操作(list,set)
  • []linsert lista before 2 3//aaa 333//aaaの前に333
  • の要素を挿入
  • []lset lista 4 bbb//5番目の要素をbbb
  • に変更
  • []lindex lista 0//1番目の要素
  • を表示
  • []lindex lista 3//4番目の要素
  • を表示
  • []llen lista//チェーンテーブルの要素を表示
  • 例:
    127.0.0.1:6379> linsert list before aaa bbb
    (integer) 3
    127.0.0.1:6379> linsert list after aaa 111
    (integer) 4
    127.0.0.1:6379> lrange list 0 -1
    1) "bbb"
    2) "aaa"
    3) "111"
    4) "ccc"
    127.0.0.1:6379> lindex list 0  //LINDEX       
    "bbb"
    127.0.0.1:6379> llen list  // LINDEX        
    (integer) 4
  • []sadd seta aaa//集合setaに要素
  • を入れる
  • []smembers seta//コレクション内のすべての要素を表示
  • []srem seta aaa//削除要素
  • []spop seta//ランダムに要素を取り出し、
  • を削除
  • []sdiff seta setb//求差セット、setaを標準
  • とする
  • []sdiffstore setc seta setb//差分セットを求めて格納し、setcに
  • 格納する
  • []sinter seta setb//交差
  • を求める
  • []sinterstore setd seta setb//交差をsetd
  • に格納
  • []sunion seta setb//和集
  • []sunionstore sete seta setb//並べ替えセットを求めてsete
  • に格納
    127.0.0.1:6379> sadd setb 222
    (integer) 1
    127.0.0.1:6379> sadd setb aaa
    (integer) 1
    127.0.0.1:6379> sadd seta 111
    (integer) 1
    127.0.0.1:6379> smembers seta
    1) "bbb"
    2) "111"
    127.0.0.1:6379> smembers setb
    1) "aaa"
    2) "222"
    127.0.0.1:6379> sdiff seta setb
    1) "bbb"
    2) "111"

    三、Redis常用操作(set,zset)
    ZADD秩序セットの作成
    127.0.0.1:6379> ZADD zseta 11 123
    (integer) 1
    127.0.0.1:6379> ZADD zseta 0 1ab
    (integer) 1
    127.0.0.1:6379> zrange zseta 0 -1
    1) "1ab"
    2) "123"
    127.0.0.1:6379> ZADD zseta 14 dddd
    (integer) 1
    127.0.0.1:6379> zadd zseta 16 121211
    (integer) 1
    127.0.0.1:6379> zrange zseta 0 -1
    1) "1ab"
    2) "123"
    3) "dddd"
    4) "121211"   //      ,     
    
    127.0.0.1:6379> ZREM zseta 123     //      
    (integer) 1
    127.0.0.1:6379> ZRANGE zseta 0 -1
    1) "1ab"
    2) "dddd"
    3) "121211"  

    ZRANKインデックスデータ
    127.0.0.1:6379> zrange zseta 0 -1
    1) "1ab"
    2) "123"
    3) "dddd"
    4) "121211"
    127.0.0.1:6379> zrank zseta dddd
    (integer) 2  //        ,    0  , score    
    
    127.0.0.1:6379> ZREVRANK zseta 121211
    (integer) 0 // score    ,      

    ZCARD統計集合要素の個数
    127.0.0.1:6379> ZCARD zseta
    (integer) 4
    ZCOUNT             
    
    127.0.0.1:6379> ZCOUNT zseta 10 20
    (integer) 3     //      10-20     
    (integer) 2

    ZRANGEBYSCOREは、スコア範囲の要素を返します.
    127.0.0.1:6379> ZRANGEBYSCORE zseta 10 20
    1) "123"
    2) "dddd"
    3) "121211"

    ZREMRANGEBYSCOREスコア範囲の要素を削除
    127.0.0.1:6379> ZREMRANGEBYSCORE zseta 10 15
    (integer) 2
    127.0.0.1:6379> ZRANGE zseta 0 -1
    1) "1ab"
    2) "121211"

    ZREMRANGEBYRANKインデックス範囲の要素を削除し、score順にソート
    127.0.0.1:6379> ZRANGE zseta 0 -1
    1) "asdaqwe"
    2) "123"
    3) "234"
    4) "345"
    5) "asdaa"
    6) "asasdz"
    127.0.0.1:6379> ZREMRANGEBYRANK zseta 1 10
    (integer) 5
    127.0.0.1:6379> ZRANGE zseta 0 -1
    1) "asdaqwe"

    四、Redis常用操作(hash)
    HMSETバッチ確立キー値ペア
    127.0.0.1:6379> HMSET hash2 a 1 b 2 c 3 d 4
    OK
    127.0.0.1:6379> Hgetall hash2
    1) "a"
    2) "1"
    3) "b"
    4) "2"
    5) "c"
    6) "3"
    7) "d"
    8) "4"

    HMGETはキー値を検索する
    127.0.0.1:6379> hmget hash2 b c
    1) "2"
    2) "3"

    HDELキー値を削除
    127.0.0.1:6379> hdel hash2 b
    (integer) 1
    127.0.0.1:6379> Hgetall hash2
    1) "a"
    2) "1"
    3) "c"
    4) "3"
    5) "d"
    6) "4"

    HKEYSはすべてのキー値を印刷HVALSはすべてのvaluesを印刷する
    127.0.0.1:6379> hkeys hash2
    1) "a"
    2) "c"
    3) "d"
    127.0.0.1:6379> hvals hash2
    1) "1"
    2) "3"
    3) "4"

    hlenいくつかのfiledを表示
    127.0.0.1:6379> hlen hash2
    (integer) 3

    五、Redisキー値操作
  • []keys*//すべてのkey
  • を取り出す
  • []keys my*//ファジイマッチング
  • []exists name//nameキーが1を返します.そうしないと0を返します.
  • []del key 1//キーを削除//成功裏に1を返します.そうしないと0を返します.
  • []EXPIRE key 1 100//key 1 100 s設定後失効
  • 127.0.0.1:6379> keys *
     1) "list1"
     2) "k2"
     3) "list"
     4) "k3"
     5) "set2"
     6) "hash1"
     7) "hash2"
     8) "zseta"
     9) "mykey"
    10) "key1"
    11) "set3"
    12) "setb"
    13) "seta"
    14) "key2"
    15) "k1"
    16) "set1"
    127.0.0.1:6379> keys my*
    1) "mykey"
    127.0.0.1:6379> EXISTS key1
    (integer) 1
    127.0.0.1:6379> EXISTS key11
    (integer) 0
    127.0.0.1:6379> del key1
    (integer) 1
    127.0.0.1:6379> get key1
    (nil)
    127.0.0.1:6379> EXPIRE k2 10
    (integer) 1
    127.0.0.1:6379> get k2
    "2"
    127.0.0.1:6379> get k2
    (nil)
  • []ttl key//キーの有効期限がどれくらいあるかを確認します.単位はsです.keyが存在しない場合は、-2を返します.keyが存在するが残りの生存時間が設定されていない場合、-1を返します.そうでなければ、keyの残りの生存時間を返します.
  • 127.0.0.1:6379> ttl key2
    (integer) 6
    127.0.0.1:6379> ttl key2
    (integer) 1
    127.0.0.1:6379> ttl key2
    (integer) -2
  • []select 0//は現在のデータベースの選択を表し、デフォルトは0データベース
  • に入ります.
  • []move age 1//ageを1データベース
  • に移動
  • []persist key 1//key 1の期限切れをキャンセル
  • []randomkey//ランダムに1つのkey
  • を返す
  • []rename oldname newname//名前変更key
  • 127.0.0.1:6379> move set2 1
    (integer) 1
    127.0.0.1:6379> select 1
    OK
    127.0.0.1:6379[1]> keys *
    1) "set2"
    127.0.0.1:6379[1]> SELECT 0
    OK
    127.0.0.1:6379> EXPIRE mykey 1000
    (integer) 1
    127.0.0.1:6379> ttl mykey
    (integer) 996
    
    127.0.0.1:6379> rename setb set3
    OK
    127.0.0.1:6379> keys set*
    1) "set3"
    2) "seta"
    3) "set1"
  • []type key 1//戻りキーのタイプ
  • 127.0.0.1:6379> TYPE seta
    set
    
    127.0.0.1:6379> TYPE zseta
    zset
    127.0.0.1:6379> type key1
    none
    127.0.0.1:6379> type hash2
    hash
    127.0.0.1:6379> type list
    list

    六、Redis常用操作(サービス)
    dbsize//現在のデータベースのkey数を返しinfo//redisデータベースのステータス情報を返します
    127.0.0.1:6379> DBSIZE
    (integer) 11
    
    127.0.0.1:6379> info
    # Server
    redis_version:4.0.9
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:5c0f8253777cfd43
    redis_mode:standalone
    os:Linux 3.10.0-514.el7.x86_64 x86_64
    arch_bits:64
    multiplexing_api:epoll
    atomicvar_api:atomic-builtin
    gcc_version:4.8.5
    process_id:7661
    run_id:8e0a79aba2f0507ea46724b5e274a026a4b03b14
    tcp_port:6379
    uptime_in_seconds:20486
    uptime_in_days:0
    hz:10
    lru_clock:2406733
    executable:/usr/local/src/redis-4.0.9/redis-server
    config_file:/etc/redis.conf
    
    # Clients
    connected_clients:1
    client_longest_output_list:0
    client_biggest_input_buf:0
    blocked_clients:0
    
    # Memory
    used_memory:850408
    used_memory_human:830.48K
    used_memory_rss:7700480
    used_memory_rss_human:7.34M
    used_memory_peak:872080
    used_memory_peak_human:851.64K
  • []flushdb//現在のデータベース内のすべてのキー
  • をクリア
  • []flushall//すべてのデータベースのすべてのkey
  • をクリア
  • []bgsave//rdbファイルにデータを保存し、バックグラウンドで
  • を実行
  • []save//役割は同じですが、フロントで
  • を実行します.
  • []config get*//すべての構成パラメータ
  • を取得
  • []config get dir//取得構成パラメータ
  • []config set dir//構成パラメータ変更
  • データリカバリ:dirディレクトリとdbfilenameを定義または決定し、バックアップしたrdbファイルをdirディレクトリの下に配置し、redisサービスを再起動するとデータ
  • をリカバリできます.
    127.0.0.1:6379> CONFIG GET dir
    1) "dir"
    2) "/data/redis"
    127.0.0.1:6379> CONFIG GET dbfileema
    (empty list or set)
    127.0.0.1:6379> CONFIG GET dbfilename
    1) "dbfilename"
    2) "dump.rdb"

    七、Redis安全設定
    2年前にRedisが火事になった時、つまり×××最も深刻な時.Redisが黒くなってシステムが黒くなった例を何度も見ました!
  • はどうして黒くなったのですか.

  • Redisサービスは開始されたが、全ネットワークIPを傍受し、6379のデフォルトポートが変更されず、iptablesも閉鎖され、パブリックネットワークIPも開放されており、Redisもパスワードを設定していない.×××ポートをスキャンし、Redisサーバにログインする権限を軽く緩めることができます.スーパー管理者の権限です.そして×××dir dbnameを設定することができ、dirは/root/に定義する.ssh、dbnameは以下のように定義.ssh/authorized_keysはこの値を自分の公開鍵に書きます.
    これらはすべてよく知らないべきで、これは生きているのではありません×××の公開鍵は私たちのサーバーにアップロードされ、スーパー管理者を利用してやりたいことをします.
    redis脆弱性の解決方法
    ①パスワードの設定②デフォルトポートの変更③イントラネットIPの傍受④専用口座の設定⑤configureコマンドの変更
    プロファイルvim/etc/redisを開きます.conf
        ip
    bind 127.0.0.1  2.2.2.2//     ip,     
    
            
    port 16000
    
        
    requirepass xavi
    redis-cli  -a 'asd9577'
    
     config    
    rename-command CONFIG xavi
    
      config   
    rename-command CONFIG “”
    [root@xavi redis-4.0.9]# vim /etc/redis.conf
    [root@xavi redis-4.0.9]# killall redis-server
    [root@xavi redis-4.0.9]# redis-server /etc/redis.conf  //       redis
    [root@xavi redis-4.0.9]# redis-cli
    127.0.0.1:6379> keys *
    (error) NOAUTH Authentication required.
    127.0.0.1:6379> redis-cli -a 'xavi>com'
    (error) ERR unknown command 'redis-cli'
    127.0.0.1:6379> keys *
    (error) NOAUTH Authentication required.
    127.0.0.1:6379> quit
    [root@xavi redis-4.0.9]# redis-cli -a 'xavi>com'
    127.0.0.1:6379> keys *
    (empty list or set)