redis-server
启动服务器
vagrant@homestead:~$ sudo /etc/init.d/redis-server [start|stop|restart]
redis-cli
连接服务器,可选参数有 -h(Host) -p[Port] -a[AuthPassword]
vagrant@homestead:~$ redis-cli -h 127.0.0.1 -p 6379 -a foobar
ping
ping命令可用于检测redis实例是否存活,如果存活则显示PONG
vagrant@homestead:~$ redis-cli -h 127.0.0.1 -p 6379 -a foobar
127.0.0.1:6379> ping
PONG
info
获取redis服务器的统计信息
127.0.0.1:6379> info
# Server
redis_version:4.0.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:1bc80a08306a3efd
redis_mode:standalone
os:Linux 4.15.0-22-generic x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:7.3.0
process_id:6296
run_id:2e8154c6a22a501c3718ed0842e3dd7b0f12d52b
tcp_port:6379
uptime_in_seconds:4524
uptime_in_days:0
hz:10
lru_clock:10579059
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:841280
used_memory_human:821.56K
used_memory_rss:4009984
used_memory_rss_human:3.82M
used_memory_peak:886360
used_memory_peak_human:865.59K
used_memory_peak_perc:94.91%
used_memory_overhead:832750
used_memory_startup:782512
used_memory_dataset:8530
used_memory_dataset_perc:14.51%
total_system_memory:4136120320
total_system_memory_human:3.85G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:4.77
mem_allocator:jemalloc-3.6.0
active_defrag_running:0
lazyfree_pending_objects:0
# Persistence
loading:0
rdb_changes_since_last_save:4
rdb_bgsave_in_progress:0
rdb_last_save_time:1537305449
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:135168
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
aof_last_cow_size:0
# Stats
total_connections_received:13
total_commands_processed:186
instantaneous_ops_per_sec:0
total_net_input_bytes:5692
total_net_output_bytes:140424
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:7
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:25
keyspace_misses:11
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:115
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:d142a42ed468b574fa29e6625d5bd29ff07a5142
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:4.52
used_cpu_user:1.41
used_cpu_sys_children:0.00
used_cpu_user_children:0.01
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=12,expires=0,avg_ttl=0
auth [password]
验证密码
# 没有设置密码
127.0.0.1:6379> auth 123
(error) ERR Client sent AUTH, but no password is set
# 密码错误
127.0.0.1:6379> auth 123
(error) ERR invalid password
# 密码正确
127.0.0.1:6379> auth xxx
OK
select [dbid]
选择数据库
# 正常情况
127.0.0.1:6379> select 1
OK
# 数据库下标超出范围
127.0.0.1:6379[1]> select 20
(error) ERR DB index is out of range
echo [message]
打印字符串,返回字符串本身
127.0.0.1:6379[1]> echo helloredis
"helloredis"
quit
退出连接
127.0.0.1:6379[1]> quit
slaveof [host] [port]
将当前redis服务器转变为指定服务器的从属服务器,如果当期服务器已经是某个主服务器的从属服务器,那么将停止对旧主服务器的复制,丢弃旧数据,转而开始对新服务器进行同步.
slaveof no one: 这个命令将使当前服务器关闭复制功能,并从从属服务器变为主服务器,旧数据不会被丢弃,利用这个特性可以在主服务器失败的时候,将从属服务器变为主服务器,从而实现无间断运行.
shutdown [save|nosave]
该命令执行以下操作:
- 停止所有客户端
- 如果有至少一个保存点在等待,执行 SAVE 命令
- 如果 AOF 选项被打开,更新 AOF 文件
- 关闭 redis 服务器(server)
执行失败时返回错误, 执行成功时不返回任何信息,服务器和客户端的连接断开,客户端自动退出
127.0.0.1:6379> shutdown
not connected>
save
执行一个同步保存操作,将当前 Redis 实例上的所有数据快照(snapshot)以 RDB 文件的形式保存在磁盘,保存成功时返回OK
127.0.0.1:6379> save
OK
bgsave
在后台异步保存当前数据库的数据到磁盘,命令执行之后立即返回 OK,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出
127.0.0.1:6379> bgsave
Background saving started
lastsave
返回最近一次Redis成功将数据保存到磁盘的时间,以unix时间戳格式表示
127.0.0.1:6379> lastsave
(integer) 1537430941
dbsize
返回当前数据库的key数量
127.0.0.1:6379> dbsize
(integer) 66
flushdb
清空当前数据库的所有key
127.0.0.1:6379[1]> flushdb
OK
flushall
清空整个Redis的所有key
127.0.0.1:6379[1]> flushall
OK
time
返回当前服务器的时间,返回一个包含两个字符串的列表: 第一个字符串是当前时间(以 UNIX 时间戳格式表示),而第二个字符串是当前这一秒钟已经逝去的微秒数
127.0.0.1:6379> time
1) "1537431255"
2) "527641"
client list
返回当前连接的所有客户端信息和统计数据,返回多行字符串:这些字符串按以下形式被格式化:
- 每个已连接客户端对应一行(以 LF 分割)
- 每行字符串由一系列 属性=值 形式的域组成,每个域之间以空格分开
以下是域的含义:
- addr : 客户端的地址和端口
- fd : 套接字所使用的文件描述符
- age : 以秒计算的已连接时长
- idle : 以秒计算的空闲时长
- flags : 客户端 flag
- db : 该客户端正在使用的数据库 ID
- sub : 已订阅频道的数量
- psub : 已订阅模式的数量
- multi : 在事务中被执行的命令数量
- qbuf : 查询缓冲区的长度(字节为单位, 0 表示没有分配查询缓冲区)
- qbuf-free : 查询缓冲区剩余空间的长度(字节为单位, 0 表示没有剩余空间)
- obl : 输出缓冲区的长度(字节为单位, 0 表示没有分配输出缓冲区)
- oll : 输出列表包含的对象数量(当输出缓冲区没有剩余空间时,命令回复会以字符串对象的形式被入队到这个队列里)
- omem : 输出缓冲区和输出列表占用的内存总量
- events : 文件描述符事件
- cmd : 最近一次执行的命令
客户端 flag 可以由以下部分组成:
- O : 客户端是 MONITOR 模式下的附属节点(slave)
- S : 客户端是一般模式下(normal)的附属节点
- M : 客户端是主节点(master)
- x : 客户端正在执行事务
- b : 客户端正在等待阻塞事件
- i : 客户端正在等待 VM I/O 操作(已废弃)
- d : 一个受监视(watched)的键已被修改, EXEC 命令将失败
- c : 在将回复完整地写出之后,关闭链接
- u : 客户端未被阻塞(unblocked)
- A : 尽可能快地关闭连接
- N : 未设置任何 flag
文件描述符事件可以是:
- r : 客户端套接字(在事件 loop 中)是可读的(readable)
- w : 客户端套接字(在事件 loop 中)是可写的(writeable)
127.0.0.1:6379> client list
id=3 addr=127.0.0.1:60146 fd=8 name= age=404 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
id=4 addr=127.0.0.1:60148 fd=9 name= age=63 idle=63 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=5 addr=127.0.0.1:60150 fd=10 name= age=61 idle=61 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=6 addr=127.0.0.1:60152 fd=11 name= age=60 idle=60 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
client setname [name]
指定当前连接的名称,这个名字会显示在 client list
结果中,用于识别客户端
可以设置name为"“来达到清除名称的目的,必须是双引号
127.0.0.1:6379> client setname a
OK
127.0.0.1:6379> client list
id=3 addr=127.0.0.1:60146 fd=8 name=a age=1235 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
id=4 addr=127.0.0.1:60148 fd=9 name= age=894 idle=894 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=5 addr=127.0.0.1:60150 fd=10 name= age=892 idle=892 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=6 addr=127.0.0.1:60152 fd=11 name= age=891 idle=891 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
127.0.0.1:6379> client getname
"a"
# 清除名称
127.0.0.1:6379> client setname ""
OK
127.0.0.1:6379> client getname
(nil)
client getname
获取当前连接的名称
127.0.0.1:6379> client getname
"a"
client kill [ip:port]
关闭指定连接,ip:port可通过 client list
查看.
127.0.0.1:6379> client kill 127.0.0.1:60146
OK
127.0.0.1:6379> client list
not connected>
client pause [timeout]
阻塞客户端一段时间,单位是毫秒,成功后客户端执行命令会被暂时阻塞
127.0.0.1:6379> client pause 10000
OK
127.0.0.1:6379> set a 1
OK
(8.79s)
command
返回所有的Redis命令的详细信息,以数组形式展示
127.0.0.1:6379> command
0) 1) "zunionstore"
2) (integer) -4
3) 1) write
2) denyoom
3) movablekeys
4) (integer) 0
5) (integer) 0
6) (integer) 0
1) 1) "set"
2) (integer) -3
3) 1) write
2) denyoom
4) (integer) 1
5) (integer) 1
6) (integer) 1
command count
获取所有命令的总数
127.0.0.1:6379> command count
(integer) 180
role
返回主从实例中所属的角色
127.0.0.1:6379> role
1) "master"
2) (integer) 0
3) (empty list or set)