Redis:常用命令
跳到导航
跳到搜索
Redis命令
redis手册:
- redis英文版命令大全:“https://redis.io/commands”
- redis中文版命令大全:“http://redisdoc.com/”
连接命令
Redis 连接命令主要是用于连接 redis 服务:
命令 | 描述 |
---|---|
AUTH <password> | 验证密码是否正确 |
ECHO <message> | 打印字符串 |
PING | 查看服务是否运行 |
QUIT | 关闭当前连接 |
SELECT <index> | 切换到指定的数据库 |
示例:
redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
服务器命令
Redis 服务器命令主要是用于管理 redis 服务:
命令 | 描述 |
---|---|
INFO [section] | 获取 Redis 服务器的各种信息和统计数值 |
MONITOR | 实时打印出 Redis 服务器接收到的命令,调试用 |
DBSIZE | 返回当前数据库的 key 的数量 |
FLUSHALL | 删除所有数据库的所有key |
FLUSHDB | 删除当前数据库的所有key |
TIME | 返回当前服务器时间 |
LASTSAVE | 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示 |
SAVE | 同步保存数据到硬盘 |
BGSAVE | 在后台异步保存当前数据库的数据到磁盘 |
BGREWRITEAOF | 异步执行一个 AOF(AppendOnly File) 文件重写操作 |
SHUTDOWN [NOSAVE] [SAVE] | 异步保存数据到硬盘,并关闭服务器 |
COMMAND | 获取 Redis 命令详情数组 |
COMMAND COUNT | 获取 Redis 命令总数 |
COMMAND GETKEYS | 获取给定命令的所有键 |
COMMAND INFO <command-name> [<command-name>] | 获取指定 Redis 命令描述的数组 |
CLIENT LIST | 获取连接到服务器的客户端连接列表 |
CLIENT GETNAME | 获取连接的名称 |
CLIENT PAUSE <timeout> | 在指定时间内终止运行来自客户端的命令 |
CLIENT SETNAME <connection-name> | 设置当前连接的名称 |
CLIENT KILL [ip:port] [ID client-id] | 关闭客户端连接 |
CONFIG GET <parameter> | 获取指定配置参数的值 |
CONFIG REWRITE | 对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写 |
CONFIG SET <parameter> <value> | 修改 redis 配置参数,无需重启 |
CONFIG RESETSTAT | 重置 INFO 命令中的某些统计数据 |
DEBUG OBJECT <key> | 获取 key 的调试信息 |
DEBUG SEGFAULT | 让 Redis 服务崩溃【???】 |
SLOWLOG <subcommand> [argument] | 管理 redis 的慢日志 |
CLUSTER SLOTS | 获取集群节点的映射数组 |
ROLE | 返回主从实例所属的角色 |
SLAVEOF <host> <port> | 将当前服务器转变为指定服务器的从属服务器(slave server) |
SYNC | 用于复制功能(replication)的内部命令 |
以下实例演示了如何获取 redis 服务器的统计信息:
redis 127.0.0.1:6379> INFO
# Server
redis_version:2.8.13
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:c2238b38b1edb0e2
redis_mode:standalone
os:Linux 3.5.0-48-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.7.2
process_id:3856
run_id:0e61abd297771de3fe812a3c21027732ac9f41fe
tcp_port:6379
uptime_in_seconds:11554
uptime_in_days:0
hz:10
lru_clock:16651447
config_file:
# Clients
connected_clients:1
client-longest_output_list:0
client-biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:589016
used_memory_human:575.21K
used_memory_rss:2461696
used_memory_peak:667312
used_memory_peak_human:651.67K
used_memory_lua:33792
mem_fragmentation_ratio:4.18
mem_allocator:jemalloc-3.6.0
# Persistence
loading:0
rdb_changes_since_last_save:3
rdb_bgsave_in_progress:0
rdb_last_save_time:1409158561
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:24
total_commands_processed:294
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:41
keyspace_misses:82
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:264
# 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:10.49
used_cpu_user:4.96
used_cpu_sys_children:0.00
used_cpu_user_children:0.01
# Keyspace
db0:keys=94,expires=1,avg_ttl=41638810
db1:keys=1,expires=0,avg_ttl=0
db3:keys=1,expires=0,avg_ttl=0
脚本命令
Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
Eval 命令的基本语法如下:
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
下表列出了 redis 脚本常用命令:
命令 | 描述 |
---|---|
EVAL <script> numkeys <key> [<key>] <arg> [<arg>] | 执行 Lua 脚本。 |
EVALSHA sha1 numkeys <key> [<key>] <arg> [<arg>] | 执行 Lua 脚本。【?】 |
SCRIPT LOAD <script> | 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。 |
SCRIPT EXISTS <script> [<script>] | 查看指定的脚本是否已经被保存在缓存当中。 |
SCRIPT FLUSH | 从脚本缓存中移除所有脚本。 |
SCRIPT KILL | 杀死当前正在运行的 Lua 脚本。 |
示例:
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"
安全
以下都是在配置文件“redis.conf”中进行修改。
设置密码
通过以下命令查看是否设置了密码验证:
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
- 默认情况下 requirepass 参数是空的。
可以通过两种方式设置密码:
- 配置文件:
requirepass 123456
- 命令:
127.0.0.1:6379> CONFIG set requirepass "runoob" OK
- 因为 redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。
可以通过两种方式使用密码:
- 启动时:
redis-cli -h 127.0.0.1 -p 6379 -a 123456
- 连接时:
AUTH 123456
绑定ip
配置文件中:
# bind 127.0.0.1
- 取消 ip 绑定注释(去掉 #),
- 修改“127.0.0.1”为允许访问 redis 服务器的ip地址:
禁用命令、重命名命令
配置文件中:
rename-command FLUSHALL oyfekmjvmwxq5a9c8usofuo369x0it2k # 重命名FLUSHALL命令
rename-command FLUSHALL "" # 禁用FLUSHALL命令
rename-command FLUSHDB "" # 禁止FLUSHDB命令
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 # 重命名CONFIG命令
rename-command CONFIG "" # 禁止CONFIG命令
- 对于禁用“FLUSHALL”命令,需要保证“appendonly.aof”文件没有 flushall 命令,否则服务器无法启动;
修改默认端口
配置文件中:
port 6379
- 修改 redis 的端口,这一点很重要,使用默认的端口很危险;