5種類のredisの一般的な操作(データ型+キー値+サービス+セキュリティ)
[toc]
5種類のredis共通データ型操作
一、Redis常用操作(string,list)
1.1 keyが2つの異なる値を設定すると、2番目の値が1番目の値を上書きします.
1.2 SETNXキー値にvalueがあるかどうかを検出する直接0がある場合直接1を返さない場合、このvalueを作成する
1.3 setexキーに対して有効期限を設定します.
1.4 LPUSHは値をとり、RPOPまたはLPOPは値を取り出せばその値は削除されます.[]lpush lista a//左側から要素 を追加 [ ] lpush lista b [ ] lrange lista 0 -1 []lpop lista//左側から最初の要素 を取り出す[]rpush lista 1//右側から要素 を追加[]rpop lista//最初の要素 を右側から取り出す
二、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//チェーンテーブルの要素を表示 例:[]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 に格納
三、Redis常用操作(set,zset)
ZADD秩序セットの作成
ZRANKインデックスデータ
ZCARD統計集合要素の個数
ZRANGEBYSCOREは、スコア範囲の要素を返します.
ZREMRANGEBYSCOREスコア範囲の要素を削除
ZREMRANGEBYRANKインデックス範囲の要素を削除し、score順にソート
四、Redis常用操作(hash)
HMSETバッチ確立キー値ペア
HMGETはキー値を検索する
HDELキー値を削除
HKEYSはすべてのキー値を印刷HVALSはすべてのvaluesを印刷する
hlenいくつかのfiledを表示
五、Redisキー値操作[]keys*//すべてのkey を取り出す[]keys my*//ファジイマッチング []exists name//nameキーが1を返します.そうしないと0を返します. []del key 1//キーを削除//成功裏に1を返します.そうしないと0を返します. []EXPIRE key 1 100//key 1 100 s設定後失効 []ttl key//キーの有効期限がどれくらいあるかを確認します.単位はsです.keyが存在しない場合は、-2を返します.keyが存在するが残りの生存時間が設定されていない場合、-1を返します.そうでなければ、keyの残りの生存時間を返します. []select 0//は現在のデータベースの選択を表し、デフォルトは0データベース に入ります.[]move age 1//ageを1データベース に移動[]persist key 1//key 1の期限切れをキャンセル []randomkey//ランダムに1つのkey を返す[]rename oldname newname//名前変更key []type key 1//戻りキーのタイプ
六、Redis常用操作(サービス)
dbsize//現在のデータベースのkey数を返しinfo//redisデータベースのステータス情報を返します[]flushdb//現在のデータベース内のすべてのキー をクリア[]flushall//すべてのデータベースのすべてのkey をクリア[]bgsave//rdbファイルにデータを保存し、バックグラウンドで を実行[]save//役割は同じですが、フロントで を実行します.[]config get*//すべての構成パラメータ を取得[]config get dir//取得構成パラメータ []config set dir//構成パラメータ変更 データリカバリ:dirディレクトリとdbfilenameを定義または決定し、バックアップしたrdbファイルをdirディレクトリの下に配置し、redisサービスを再起動するとデータ をリカバリできます.
七、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
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は値を取り出せばその値は削除されます.
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)
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
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キー値操作
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)
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
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"
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
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)