Redis常用操作
Redis常用操作(String & list)
set key1 Anna ---当key1 已经创建,第二次赋值将会被覆盖掉
[root@root-01 ~ ]# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> set key1 Anna
OK
127.0.0.1:6379> set key2 Quan
OK
127.0.0.1:6379> set key1 dong
OK
127.0.0.1:6379> get key1
"dong"
setnx key1 Anna ---检查key是否存在
[root@root-01 ~ ]# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> SETNX key1 Anna
(integer) 0
说明:如果key存在那么会返回0
127.0.0.1:6379> SETNX key3 Anna
(integer) 1
127.0.0.1:6379> get key3
"Anna"
说明:如果key不存在那么会返回1,并且创建
setex key4 10 w ---创建key4设置过期时间为10s, 值为w,若key已经存在,会覆盖新的值
创建:
127.0.0.1:6379> SETEX key4 10 w
OK
127.0.0.1:6379> get key4
"w"
给key4重新设置过期时间及值:
127.0.0.1:6379> SETEX key4 100 hh
OK
127.0.0.1:6379> get key4
"hh"
lpush list a ---从左边加入一个元素
127.0.0.1:6379> lpush list a
(integer) 1
127.0.0.1:6379> lpush list b
(integer) 2
127.0.0.1:6379> lpush list c
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1
1) "c"
2) "b"
3) "a"
lpop list ---从左边取出第一个元素
说明:lpop 取元素是从顺数第一个取的
127.0.0.1:6379> LPOP list
"c"
127.0.0.1:6379> LRANGE list 0 -1
1) "b"
2) "a"
rpop list ---从右边取出第一个元素
说明:说明:rpop 取元素是从倒数第一个取的
127.0.0.1:6379> rpop list
"a"
127.0.0.1:6379> LRANGE list 0 -1
1) "gg"
2) "dd"
3) "cc"
4) "b"
linsert list AFTER gg kk ---在gg的前面插入一个元素为kk
LSET list 5 uu ---在5的前面插入一个元素为uu (5表示位置)
127.0.0.1:6379> LINSERT list AFTER gg kk
(integer) 5
127.0.0.1:6379> LINSERT list AFTER b mm
(integer) 6
127.0.0.1:6379> LRANGE list 0 -1
1) "gg"
2) "kk"
3) "dd"
4) "cc"
5) "b"
6) "mm"
或是lset :
127.0.0.1:6379> LSET list 5 uu
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "gg"
2) "kk"
3) "dd"
4) "cc"
5) "b"
6) "uu"
lindex list 0 ---查看第1个元素
lindex list 5 ---查看第6个元素
127.0.0.1:6379> LRANGE list 0 -1
1) "gg"
2) "kk"
3) "dd"
4) "cc"
5) "b"
6) "uu"
127.0.0.1:6379> LINDEX list 0
"gg"
127.0.0.1:6379> LINDEX list 5
"uu"
127.0.0.1:6379> LINDEX list 2
"dd"
llen list ---查看链表中有几个元素
127.0.0.1:6379> LLEN list
(integer) 6
redis常用操作(set)
sadd seta aaa ---向集合seta中放入元素
127.0.0.1:6379> SADD seta aaa
(integer) 1
127.0.0.1:6379> SADD seta bbb
(integer) 1
127.0.0.1:6379> SADD seta cc
(integer) 1
smembers seta ---查看集合中的元素
127.0.0.1:6379> SMEMBERS seta
1) "cc"
2) "aaa"
3) "bbb"
srem seta aaa ---删除集合中的某个元素
127.0.0.1:6379> SREM seta aaa
(integer) 1
127.0.0.1:6379> SMEMBERS seta
1) "cc"
2) "bbb"
spop seta ---随机取出一个元素删除
127.0.0.1:6379> SMEMBERS seta
1) "cc"
2) "bbb"
127.0.0.1:6379> SPOP seta
"cc"
127.0.0.1:6379> SMEMBERS seta
1) "bbb"
SDIFF seta setb ---求差集,哪个集合放在前面就为标准(现在是以seta为标准)
sdiffstore setc seta setb ---求差集并且存储到一个新的集合setc
127.0.0.1:6379> SMEMBERS seta
1) "aaa"
2) "222"
3) "bbb"
4) "ccc"
127.0.0.1:6379> SMEMBERS setb
1) "ddd"
2) "222"
3) "ccc"
求差集:
127.0.0.1:6379> SDIFF seta setb
1) "aaa"
2) "bbb"
求的差集存储到一个新的集合setc:
127.0.0.1:6379> sdiffstore setc seta setb
(integer) 2
127.0.0.1:6379> SMEMBERS setc
1) "aaa"
2) "bbb"
sinter seta setb --求交集
SINTERSTORE setd seta setb ---求交集并且存储到一个新的集合setd
两个集合的元素:
127.0.0.1:6379> SMEMBERS seta
1) "aaa"
2) "222"
3) "bbb"
4) "ccc"
127.0.0.1:6379> SMEMBERS setb
1) "ddd"
2) "222"
3) "ccc"
求交集:
127.0.0.1:6379> SINTER seta setb
1) "222"
2) "ccc"
求交集并存储:
127.0.0.1:6379> SINTERSTORE setd seta setb
(integer) 2
127.0.0.1:6379> SMEMBERS setd
1) "222"
2) "ccc"
SUNION seta setb ---求并集(求并集是把两个集合的元素拿出来,有重复的去重复,最终得到的结果.)
sunionstore setg seta setb ---求并集并且存储到一个新的集合setg
两个集合的元素:
127.0.0.1:6379> SMEMBERS seta
1) "aaa"
2) "222"
3) "bbb"
4) "ccc"
127.0.0.1:6379> SMEMBERS setb
1) "ddd"
2) "222"
3) "ccc"
求并集:
127.0.0.1:6379> SUNION seta setb
1) "ccc"
2) "222"
3) "aaa"
4) "ddd"
5) "bbb"
求并集并存储到setg:
127.0.0.1:6379> sunionstore setg seta setb
(integer) 5
127.0.0.1:6379> SMEMBERS setg
1) "ccc"
2) "222"
3) "aaa"
4) "ddd"
5) "bbb"
SISMEMBER seta aaa ---判断一个元素是否属于一个集合
seta集合的元素:
127.0.0.1:6379> SMEMBERS seta
1) "aaa"
2) "222"
3) "bbb"
4) "ccc"
判断aaa是否属于seta集合:
127.0.0.1:6379> SISMEMBER seta aaa
(integer) 1
127.0.0.1:6379> SISMEMBER seta ggg
(integer) 0
说明::若aaa属于seta集合,返回1,若不属于返回0
SRANDMEMBER seta ---随机取出一个元素,但不删除
127.0.0.1:6379> SRANDMEMBER seta
"aaa"
127.0.0.1:6379> SMEMBERS seta
1) "aaa"
2) "222"
3) "bbb"
4) "ccc"
redis常用操作 (zset)
ZADD zseta 11 223 ---创建有序集合
ZRANGE zseta 0 -1 ---显示所有元素
创建有序集合:
127.0.0.1:6379> ZADD zseta 11 223
(integer) 1
127.0.0.1:6379> ZADD zseta 0 12a
(integer) 1
显示所有元素:
127.0.0.1:6379> ZRANGE zseta 0 -1
1) "12a"
2) "223"
ZREM zseta 12a ---删除指定的元素
127.0.0.1:6379> ZREM zseta 12a
(integer) 1
127.0.0.1:6379> ZRANGE zseta 0 -1
1) "223"
ZRANK zseta wu331 ---返回元素的索引值忙索引值从0开始,按score正向排序
ZREVRANK zseta wu331 ---返回元素的索引值忙索引值从0开始,按score反向排序
seta所有元素:
127.0.0.1:6379> ZRANGE zseta 0 -1
1) "223"
2) "wu331"
3) "wu332"
4) "wu505"
返回元素索引值
127.0.0.1:6379> ZRANK zseta wu331
(integer) 1
返回元素索引值
127.0.0.1:6379> ZREVRANK zseta wu331
(integer) 2
zrevrange zseta 0 -1 ---反序显示所有元素
zcard zseta ---返回zseta集合中的个数
反序显示zseta的元素:
127.0.0.1:6379> zrevrange zseta 0 -1
1) "wu505"
2) "wu332"
3) "wu331"
4) "223"
返回zseta集合中的个数:
127.0.0.1:6379> zcard zseta
(integer) 4
zcount zseta 1 5 ---返回分值范围1-5的元素个数
ZRANGEBYSCORE zseta 5 10 --返回分值范围5-10的元素
返回分值范围1-5的元素个数:
127.0.0.1:6379> ZCOUNT zseta 1 5
(integer) 1
127.0.0.1:6379> ZCOUNT zseta 5 10
(integer) 3
返回分值范围5-10的元素
127.0.0.1:6379> ZRANGEBYSCORE zseta 5 10
1) "12a"
2) "12314q"
3) "1200"
ZREMRANGEBYRANK zseta 0 2 ---删除索引范围0-2的元素,按score正向排序
删除分值范围10-100的元素 --- ZREMRANGEBYSCORE zseta 10 100
zseta所有元素:
127.0.0.1:6379> zrevrange zseta 0 -1
1) "wu505"
2) "wu332"
3) "wu331"
4) "223"
5) "12314q"
6) "12a"
删除索引范围0-2的元素,按score正向排序:
127.0.0.1:6379> ZREMRANGEBYRANK zseta 0 2
(integer) 3
127.0.0.1:6379> zrange zseta 0 -1
1) "223"
2) "wu331"
3) "wu332"
4) "wu505"
删除分值范围10-100的元素:
127.0.0.1:6379> ZREMRANGEBYSCORE zseta 10 100
(integer) 4
127.0.0.1:6379> ZRANGE zseta 0 -1
(empty list or set)
Redis常用操作(hash)
HMSET hash3 1 a 2 b 3 c 4 d ---批量创建键值对
HGETALL hash3 ---查看所有键值对
HMGET hash3 1 2 ---获取指定键的值
hdel hash3 1 ---删除指定的键值对
HKEYS hash3 ---打印所有的key
hlen hash3 ---查看hash3有几个键
批量创建键值对:
127.0.0.1:6379> HMSET hash3 1 a 2 b 3 c 4 d
OK
查看所有键值对:
127.0.0.1:6379> HGETALL hash3
1) "1"
2) "a"
3) "2"
4) "b"
5) "3"
6) "c"
7) "4"
8) "d"
获取指定键的值:
127.0.0.1:6379> HMGET hash3 1 2
1) "a"
2) "b"
删除指定的键值对:
127.0.0.1:6379> hdel hash3 1
(integer) 1
127.0.0.1:6379> HGETALL hash3
1) "2"
2) "b"
3) "3"
4) "c"
5) "4"
6) "d"
打印所有的key:
127.0.0.1:6379> HKEYS hash3
1) "2"
2) "3"
3) "4"
打印所有的values:
127.0.0.1:6379> hvals hash3
1) "b"
2) "c"
3) "d"
查看hash3有几个filed:
127.0.0.1:6379> hlen hash3
(integer) 3
redis操作键值
Redis常用操作 (键值)
keys * ---取出所有key
keys k* ---模糊匹配
exists key1 ---判断一个key是否存在(存在返回1,不存在返回0)
del key1 ---删除一个key (成功返回1,否则返回0)
EXPIRE key2 100 ---设置key2 100s后过期
ttl key2 ---查看键还有多长时间过期,单位是s,当key不存在时,返回-2
当key存在但没有设置剩余生存时间时,返回-1,否则返回key的剩余生存时间
select 0 ---选择当前数据库,默认进入0数据库
MOVE set1 1 ---把set1移动到1数据库
persist key3 ---取消key3的过期时间
RANDOMKEY ---随机返回一个key
RENAME set2 set7 --- set2重命名为set7
type key3 ---查看键的类型
取出所有key:
127.0.0.1:6379> keys *
1) "set2"
2) "seta"
3) "key1"
4) "k3"
5) "set1"
6) "setd"
7) "setc"
8) "zset"
9) "key2"
10) "set3"
11) "hash2"
12) "setf"
13) "hash3"
14) "hash1"
15) "mykey"
16) "k2"
17) "k1"
18) "key3"
19) "list"
20) "setg"
21) "list1"
22) "setb"
模糊匹配:
127.0.0.1:6379> keys k*
1) "key1"
2) "k3"
3) "key2"
4) "k2"
5) "k1"
6) "key3"
判断一个key是否存在:
127.0.0.1:6379> exists key1
(integer) 1
127.0.0.1:6379> exists key22
(integer) 0
删除一个key:
127.0.0.1:6379> del key1
(integer) 1
127.0.0.1:6379> del key22
(integer) 0
设置key2 100s后过期:
127.0.0.1:6379> EXPIRE key2 100
(integer) 1
查看键还剩下多少过期时间:
127.0.0.1:6379> ttl key2
(integer) 90
127.0.0.1:6379> ttl key2
(integer) -2
127.0.0.1:6379> get key2
(nil)
选择当前数据库,默认进入0数据库:
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "set2"
2) "seta"
3) "k3"
4) "set1"
5) "setd"
6) "setc"
7) "zset"
8) "set3"
9) "hash2"
10) "setf"
11) "hash3"
12) "hash1"
13) "mykey"
14) "k2"
15) "k1"
16) "key3"
17) "list"
18) "setg"
19) "list1"
20) "setb"
把set1移动到1数据库:
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379> MOVE set1 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "set1"
说明:没有把set1 移动到1,当select 1 再使用keys * 获取所有key时,显示没有任何的key
设置key3过期时间:
127.0.0.1:6379> EXPIRE key3 1000
(integer) 1
剩余生存时间:
127.0.0.1:6379> ttl key3
(integer) 998
取消key3的过期时间:
127.0.0.1:6379> persist key3
(integer) 1
127.0.0.1:6379> ttl key3
(integer) -1
随机返回一个key:
127.0.0.1:6379> RANDOMKEY
"zset"
127.0.0.1:6379> RANDOMKEY
"k2"
127.0.0.1:6379> RANDOMKEY
"k2"
127.0.0.1:6379> RANDOMKEY
"setc"
127.0.0.1:6379> RANDOMKEY
"setb"
127.0.0.1:6379> RANDOMKEY
"key3"
给set2重命名为set7:
127.0.0.1:6379> RENAME set2 set7
OK
127.0.0.1:6379> keys set*
1) "seta"
2) "setd"
3) "setc"
4) "set3"
5) "setf"
6) "set7"
7) "setg"
8) "setb"
说明:set2重命名为set7,set2就不存在了
返回键的类型
127.0.0.1:6379> type setb
set
127.0.0.1:6379> type mykey
string
127.0.0.1:6379> type hash3
hash
127.0.0.1:6379> type zset
zset
127.0.0.1:6379> type list
list
Redis常用操作(服务)
dbsize ---返回当前数据库中key的数目
返回当前数据库中key的数目:
127.0.0.1:6379> dbsize
(integer) 19
127.0.0.1:6379> keys *
1) "seta"
2) "k3"
3) "setd"
4) "setc"
5) "zset"
6) "set3"
7) "hash2"
8) "setf"
9) "hash3"
10) "hash1"
11) "mykey"
12) "k2"
13) "set7"
14) "k1"
15) "key3"
16) "list"
17) "setg"
18) "list1"
19) "setb"
info ---返回redis数据库状态信息
返回redis数据库状态信息:
127.0.0.1:6379> info
# Server
redis_version:4.0.1
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:8d84a9a41712cf2d
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:2118
run_id:ba7a13be8dee8ff0a3747b2a23751e50bfac41f8
tcp_port:6379
uptime_in_seconds:14034
uptime_in_days:0
hz:10
lru_clock:14700586
executable:/root/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:831216
used_memory_human:811.73K
used_memory_rss:7966720
used_memory_rss_human:7.60M
used_memory_peak:831216
used_memory_peak_human:811.73K
used_memory_peak_perc:100.11%
used_memory_overhead:816326
used_memory_startup:765576
used_memory_dataset:14890
used_memory_dataset_perc:22.68%
total_system_memory:1023963136
total_system_memory_human:976.53M
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:9.58
mem_allocator:jemalloc-4.0.3
active_defrag_running:0
lazyfree_pending_objects:0
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1507869733
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:6574080
aof_enabled:1
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
aof_last_cow_size:0
aof_current_size:3123
aof_base_size:1516
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0
# Stats
total_connections_received:1
total_commands_processed:137
instantaneous_ops_per_sec:0
total_net_input_bytes:5134
total_net_output_bytes:13047
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:1
evicted_keys:0
keyspace_hits:69
keyspace_misses:6
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:923
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
# Replication
role:master
connected_slaves:0
master_replid:cbbb63f55d8010ca2b950fa02770157efd8be791
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:12.99
used_cpu_user:5.66
used_cpu_sys_children:0.54
used_cpu_user_children:0.01
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=19,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
flushdb ---清空当前数据库中所有key
flushall ---清空数据库中所有的key,包括当前以及其他的数据库(在此不做演示)
清空当前数据库中所有key:
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "set1"
127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
bgsave ---保存数据到rdb文件中,在后台运行
sava ---保存数据到rdb文件中,在当前窗口下运行,效果和bgsava一样
说明:若数据量很大的话,需要把内存里面的数据写入到rdb文件(磁盘)里面去,这过程有可能会慢、也有可能会快,这取决于数据量有多少.
127.0.0.1:6379[1]> bgsave
Background saving started
config get * ---获取所有配置参数
说明:奇数是参数的名字,偶数的参数的值
127.0.0.1:6379[1]> config get *
1) "dbfilename"
2) "dump.rdb"
3) "requirepass"
4) ""
5) "masterauth"
6) ""
7) "cluster-announce-ip"
8) ""
9) "unixsocket"
10) ""
11) "logfile"
12) "/var/log/redis.log"
13) "pidfile"
14) "/var/run/redis_6379.pid"
15) "slave-announce-ip"
16) ""
17) "maxmemory"
18) "0"
19) "maxmemory-samples"
20) "5"
21) "timeout"
22) "0"
23) "active-defrag-threshold-lower"
24) "10"
25) "active-defrag-threshold-upper"
26) "100"
27) "active-defrag-ignore-bytes"
28) "104857600"
29) "active-defrag-cycle-min"
30) "25"
31) "active-defrag-cycle-max"
32) "75"
33) "auto-aof-rewrite-percentage"
34) "100"
35) "auto-aof-rewrite-min-size"
36) "67108864"
37) "hash-max-ziplist-entries"
38) "512"
39) "hash-max-ziplist-value"
40) "64"
41) "list-max-ziplist-size"
42) "-2"
43) "list-compress-depth"
44) "0"
45) "set-max-intset-entries"
46) "512"
47) "zset-max-ziplist-entries"
48) "128"
49) "zset-max-ziplist-value"
50) "64"
51) "hll-sparse-max-bytes"
52) "3000"
53) "lua-time-limit"
54) "5000"
55) "slowlog-log-slower-than"
56) "10000"
57) "latency-monitor-threshold"
58) "0"
59) "slowlog-max-len"
60) "128"
61) "port"
62) "6379"
63) "cluster-announce-port"
64) "0"
65) "cluster-announce-bus-port"
66) "0"
67) "tcp-backlog"
68) "511"
69) "databases"
70) "16"
71) "repl-ping-slave-period"
72) "10"
73) "repl-timeout"
74) "60"
75) "repl-backlog-size"
76) "1048576"
77) "repl-backlog-ttl"
78) "3600"
79) "maxclients"
80) "10000"
81) "watchdog-period"
82) "0"
83) "slave-priority"
84) "100"
85) "slave-announce-port"
86) "0"
87) "min-slaves-to-write"
88) "0"
89) "min-slaves-max-lag"
90) "10"
91) "hz"
92) "10"
93) "cluster-node-timeout"
94) "15000"
95) "cluster-migration-barrier"
96) "1"
97) "cluster-slave-validity-factor"
98) "10"
99) "repl-diskless-sync-delay"
100) "5"
101) "tcp-keepalive"
102) "300"
103) "cluster-require-full-coverage"
104) "yes"
105) "no-appendfsync-on-rewrite"
106) "no"
107) "slave-serve-stale-data"
108) "yes"
109) "slave-read-only"
110) "yes"
111) "stop-writes-on-bgsave-error"
112) "yes"
113) "daemonize"
114) "yes"
115) "rdbcompression"
116) "yes"
117) "rdbchecksum"
118) "yes"
119) "activerehashing"
120) "yes"
121) "activedefrag"
122) "no"
123) "protected-mode"
124) "yes"
125) "repl-disable-tcp-nodelay"
126) "no"
127) "repl-diskless-sync"
128) "no"
129) "aof-rewrite-incremental-fsync"
130) "yes"
131) "aof-load-truncated"
132) "yes"
133) "aof-use-rdb-preamble"
134) "no"
135) "lazyfree-lazy-eviction"
136) "no"
137) "lazyfree-lazy-expire"
138) "no"
139) "lazyfree-lazy-server-del"
140) "no"
141) "slave-lazy-flush"
142) "no"
143) "maxmemory-policy"
144) "noeviction"
145) "loglevel"
146) "notice"
147) "supervised"
148) "no"
149) "appendfsync"
150) "everysec"
151) "syslog-facility"
152) "local0"
153) "appendonly"
154) "yes"
155) "dir"
156) "/data/redis"
157) "save"
158) "900 1 300 10 60 10000"
159) "client-output-buffer-limit"
160) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
161) "unixsocketperm"
162) "0"
163) "slaveof"
164) ""
165) "notify-keyspace-events"
166) ""
167) "bind"
168) "127.0.0.1"
config get dir ---获取配置的参数
config set timeout 1000 ---更改配置参数
获取配置参数:
127.0.0.1:6379[1]> CONFIG GET dir
1) "dir"
2) "/data/redis"
127.0.0.1:6379[1]> CONFIG GET bind
1) "bind"
2) "127.0.0.1"
更改配置参数:
127.0.0.1:6379[1]> config set timeout 1000
OK
127.0.0.1:6379[1]> CONFIG GET timeout
1) "timeout"
2) "1000"
数据恢复 --首先定义或者确定dir目录和dbfilename, 然后把备份的rdb文件放到dir目录下面,重启redis服务即可恢复数据
127.0.0.1:6379[1]> config get dir
1) "dir"
2) "/data/redis"
127.0.0.1:6379[1]> config get dbfilename
1) "dbfilename"
2) "dump.rdb"
redis安全设置
说明:关于redis安全,很多因为redis被黑导致系统被黑的案例,是怎么黑的呢? 原因很简单,就是redis服务启动了,结果redis监听了一个全网IP,如果服务器没有做iptables规则,公网IP亦开放着,所以别人就可以远程去连Redis服务器. Redis没有密码,直接连接进来,相当是获取到了超级管理员的权限,就可以设置dir目录为/root/.ssh/, dbfilename设置为authorized_keys ,/root/.ssh/authorized_keys是存放公钥的文件,黑客就可以把他自己的公钥放这个文件里面,那黑客就可以登录了,这也就是Redis的漏洞. 解决这个漏洞很简单,设置一个密码,监听内网IP加上防火墙,或是普通用户的身份去启动redis.
设置监听IP
bind 127.0.0.1 192.168.2.116 ---可以是多个IP,用空格分隔
设置监听端口
port 16000
设置密码 (密码为:anna.com)
编辑配置文件:
vim /etc/redis.conf
加一行:
requirepass anna.com
重新启动redis:
[root@root-01 ~]# killall redis-server
[root@root-01 ~]# redis-server /etc/redis.conf
登录:
[root@root-01 ~]# redis-cli -a 'anna.com'
127.0.0.1:6379>
说明:如果登录时不加密码,直接redis-cli会报错
将config命令改名
说明:这样可以提高安全,因为把config更改为anna外人并不知道
编辑配置文件:
vim /etc/redis.conf
找到rename-command在下面一行加入:
rename-command CONFIG anna
重新启动redis:
[root@root-01 ~]# killall redis-server
[root@root-01 ~]# redis-server /etc/redis.conf
登录敲config get dir 会报错,提示不知config命令
127.0.0.1:6379> config get dir
(error) ERR unknown command 'config'
敲anna get dir 就可以获取到配置参数
127.0.0.1:6379> anna get dir
1) "dir"
2) "/data/redis"