Redisは-Redisの高度なコマンドに精通しています
7117 ワード
六、Redis高級命令
高度なコマンド
keys*:一致するすべてのキーを返し、一致をぼかします.
exists:指定したkeyが存在するかどうか、存在は1を返し、存在は0を返しない
exprie:keyの有効期限を設定する
ttl:残り時間の表示
persisit:過去時間のキャンセル
select:選択データベースデータベースが0-15(デフォルトでは16データベース)s
複数のデータベースを設計するのは、実際にはデータベースのセキュリティとバックアップのためです.
move key dbindex:現在のデータのkeyを他のデータベースに移行
randmkey:ランダムに1つのkeyを返します
rename:keyの名前を変更keyの名前を変更する127.0.0.1:6379> keys *
1) "set6"
2) "c"
.....
127.0.0.1:6379> exists list5
(integer) 0
127.0.0.1:6379> exists list1
(integer) 1
127.0.0.1:6379> set a 5
OK
127.0.0.1:6379> expire a 100
(integer) 1
127.0.0.1:6379> ttl a
(integer) 61
127.0.0.1:6379> ttl a
(integer) 60
127.0.0.1:6379> persist a
(integer) 1
127.0.0.1:6379> ttl a
(integer) -1
127.0.0.1:6379> select 8
OK
127.0.0.1:6379[8]>
127.0.0.1:6379[8]> select 0
OK
127.0.0.1:6379>
127.0.0.1:6379> move a 8
(integer) 1
127.0.0.1:6379> get a
(nil)
127.0.0.1:6379> select 8
OK
127.0.0.1:6379[8]> get a
"5"
127.0.0.1:6379> randomkey
"user1"
127.0.0.1:6379> smembers set6
1) "a"
2) "c"
3) "b"
4) "d"
127.0.0.1:6379> rename set6 set7
OK
127.0.0.1:6379> smembers set6
(empty list or set)
127.0.0.1:6379> smembers set7
1) "a"
2) "c"
3) "b"
4) "d"
echo:印刷コマンド
dbsize:データベースのkey数の表示
info:データベース情報の表示
config get*受信したリクエストをリアルタイムでダンプし、関連する構成を返します.
flushdb:現在のデータベースを空にする
flushall:すべてのデータベースを空にする127.0.0.1:6379> echo hellojack
"hellojack"
127.0.0.1:6379> dbsize
(integer) 16
127.0.0.1:6379> keys *
1) "c"
2) "zset1"
3) "list4"
4) "set3"
5) "b"
6) "list3"
7) "user2"
8) "set5"
9) "list"
10) "set7"
11) "list1"
12) "user1"
13) "set2"
14) "set4"
15) "6"
16) "set1"
127.0.0.1:6379> info
# Server
redis_version:2.9.105
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7528e43d2b782d55
redis_mode:standalone
os:Linux 2.6.32-504.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:1743
run_id:761d6b4cfe9510ec62c3dd3f0861cff79b31e016
tcp_port:6379
uptime_in_seconds:11297
uptime_in_days:0
hz:10
lru_clock:15308461
config_file:/usr/local/redis/conf/6379.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:818088
used_memory_human:798.91K
used_memory_rss:7438336
used_memory_peak:818304
used_memory_peak_human:799.12K
used_memory_lua:35840
mem_fragmentation_ratio:9.09
mem_allocator:jemalloc-3.6.0
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1508478949
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
# Stats
total_connections_received:1
total_commands_processed:89
instantaneous_ops_per_sec:0
total_net_input_bytes:3170
total_net_output_bytes:2113
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:57
keyspace_misses:4
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:2492
migrate_cached_sockets:0
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:11.86
used_cpu_user:3.63
used_cpu_sys_children:0.02
used_cpu_user_children:0.00
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=16,expires=0,avg_ttl=0
db8:keys=1,expires=0,avg_ttl=0
127.0.0.1:6379>
Redisパブリケーションとサブスクリプションメッセージ
Redisは、簡単なパブリケーション購読機能を提供します.
subscribe[チャンネル]購読傍受
publish[チャンネル配信コンテンツ]配信メッセージ放送
テスト:いくつかのsshリンクを準備する
ssh 1:サブスクリプションチャネルcctv-1[root@localhost ~]# /usr/local/redis/bin/redis-cli -a redis ( redis)
127.0.0.1:6379> subscribe cctv-1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "cctv-1"
3) (integer) 1
ssh 2:サブスクリプションチャネルcctv-1[root@localhost ~]# /usr/local/redis/bin/redis-cli -a redis
127.0.0.1:6379> subscribe cctv-1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "cctv-1"
3) (integer) 1
ssh 3:チャネルcctv-1にメッセージ「abcd」を発行する[root@localhost ~]# /usr/local/redis/bin/redis-cli -a redis
127.0.0.1:6379> publish cctv-1 "abcd"
(integer) 1
ssh 1とssh 2のコンソールを観察します.
Redisセキュリティ
redisはかなり速いので、良いサーバの下で、外部ユーザーが1秒で15 W回のパスワードを試してみることができます.これは、暴力的な解読を防ぐために非常に強力なパスワードを設定する必要があることを意味します.
redisは一般的にイントラネットアクセスに設定されます.vi /usr/local/redis/conf/6379.conf
変更:#reqirepass foobared
:reqirepass redis(あなたのパスワード)
サービスを再起動し、再アクセスすると権限がありません.[root@localhost conf]# pkill redis-server
[root@localhost conf]# ../bin/redis-server /usr/local/redis/conf/6379.conf
[root@localhost conf]# cd ..
[root@localhost redis]# cd bin/
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
パスワードの入力に成功しました:127.0.0.1:6379> auth redis
OK
127.0.0.1:6379> keys *
1) "c"
2) "set1"
3) "zset1" ......
入るたびにパスワードを入力し、簡単な方法でログイン権限を入力します.[root@localhost bin]# ./redis-cli -a redis
127.0.0.1:6379> keys *
1) "c"
2) "set1" .......
127.0.0.1:6379> keys *
1) "set6"
2) "c"
.....
127.0.0.1:6379> exists list5
(integer) 0
127.0.0.1:6379> exists list1
(integer) 1
127.0.0.1:6379> set a 5
OK
127.0.0.1:6379> expire a 100
(integer) 1
127.0.0.1:6379> ttl a
(integer) 61
127.0.0.1:6379> ttl a
(integer) 60
127.0.0.1:6379> persist a
(integer) 1
127.0.0.1:6379> ttl a
(integer) -1
127.0.0.1:6379> select 8
OK
127.0.0.1:6379[8]>
127.0.0.1:6379[8]> select 0
OK
127.0.0.1:6379>
127.0.0.1:6379> move a 8
(integer) 1
127.0.0.1:6379> get a
(nil)
127.0.0.1:6379> select 8
OK
127.0.0.1:6379[8]> get a
"5"
127.0.0.1:6379> randomkey
"user1"
127.0.0.1:6379> smembers set6
1) "a"
2) "c"
3) "b"
4) "d"
127.0.0.1:6379> rename set6 set7
OK
127.0.0.1:6379> smembers set6
(empty list or set)
127.0.0.1:6379> smembers set7
1) "a"
2) "c"
3) "b"
4) "d"
127.0.0.1:6379> echo hellojack
"hellojack"
127.0.0.1:6379> dbsize
(integer) 16
127.0.0.1:6379> keys *
1) "c"
2) "zset1"
3) "list4"
4) "set3"
5) "b"
6) "list3"
7) "user2"
8) "set5"
9) "list"
10) "set7"
11) "list1"
12) "user1"
13) "set2"
14) "set4"
15) "6"
16) "set1"
127.0.0.1:6379> info
# Server
redis_version:2.9.105
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7528e43d2b782d55
redis_mode:standalone
os:Linux 2.6.32-504.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:1743
run_id:761d6b4cfe9510ec62c3dd3f0861cff79b31e016
tcp_port:6379
uptime_in_seconds:11297
uptime_in_days:0
hz:10
lru_clock:15308461
config_file:/usr/local/redis/conf/6379.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:818088
used_memory_human:798.91K
used_memory_rss:7438336
used_memory_peak:818304
used_memory_peak_human:799.12K
used_memory_lua:35840
mem_fragmentation_ratio:9.09
mem_allocator:jemalloc-3.6.0
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1508478949
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
# Stats
total_connections_received:1
total_commands_processed:89
instantaneous_ops_per_sec:0
total_net_input_bytes:3170
total_net_output_bytes:2113
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:57
keyspace_misses:4
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:2492
migrate_cached_sockets:0
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:11.86
used_cpu_user:3.63
used_cpu_sys_children:0.02
used_cpu_user_children:0.00
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=16,expires=0,avg_ttl=0
db8:keys=1,expires=0,avg_ttl=0
127.0.0.1:6379>
[root@localhost ~]# /usr/local/redis/bin/redis-cli -a redis ( redis)
127.0.0.1:6379> subscribe cctv-1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "cctv-1"
3) (integer) 1
[root@localhost ~]# /usr/local/redis/bin/redis-cli -a redis
127.0.0.1:6379> subscribe cctv-1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "cctv-1"
3) (integer) 1
[root@localhost ~]# /usr/local/redis/bin/redis-cli -a redis
127.0.0.1:6379> publish cctv-1 "abcd"
(integer) 1
vi /usr/local/redis/conf/6379.conf
[root@localhost conf]# pkill redis-server
[root@localhost conf]# ../bin/redis-server /usr/local/redis/conf/6379.conf
[root@localhost conf]# cd ..
[root@localhost redis]# cd bin/
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth redis
OK
127.0.0.1:6379> keys *
1) "c"
2) "set1"
3) "zset1" ......
[root@localhost bin]# ./redis-cli -a redis
127.0.0.1:6379> keys *
1) "c"
2) "set1" .......