Redis 命令用于在 redis 服务上执行操作。要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中,Windows环境下我们可以直接运行启动redis.exe文件或者在redis目录下打开一个cmd窗口运行 :
redis-cli.exe -h 127.0.0.1 -p 6379
在linux环境下则是进入redis安装包下的src目录,然后运行:
./redis-cli
下面通过实例说明,打开一个客户端
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
在以上实例中我们连接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。
在远程服务上执行命令
如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。
语法
$ redis-cli -h host -p port -a password
实例
以下实例演示了如何连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上。
$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
Redis 发布订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
实例
以下实例演示了发布订阅是如何工作的。在我们实例中我们创建了订阅频道名为 redisChat:
redis 127.0.0.1:6379> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
现在,我们先重新开启个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。
redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
(integer) 1
redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by runoob.com"
(integer) 1
# 订阅者的客户端会显示如下消息
1) "message"
2) "redisChat"
3) "Redis is a great caching technique"
1) "message"
2) "redisChat"
3) "Learn redis by runoob.com"
Redis 发布订阅命令
下表列出了 redis 发布订阅常用命令:
序号 | 命令及描述 |
1 | PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。 |
2 | PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。 |
3 | 将信息发送到指定的频道。 |
4 | PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。 |
5 | SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。 |
6 | UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。 |
排序
Redis 的排序操作和其他编程语言的排序操作一样, 都可以根据某种比较规则对一系列元素进行有序的排列。负责执行排序操作的 soRT命令可以根据字符串、列表、集合、有序集合、散列这5种键里面存储着的数据, 对列表、集合以及有序集合进行排序。
命令 | 用例和描述 |
SPRT | SORT source-key [BY pattern] [LIMIT Offset count] [GET pattern [GETpattern ...]] [ASC|DESC] [ALPHA] [STORE dost-key]_根据给定的选项, 对输入列表、集合或者有序集合进行排序,然后返回或者存储排序的结果 |
使用 soRT命令提供的选项可以实现以下功能:根据降序而不是默认的升序来排序元素;将元素看作是数字来进行排序, 或者将元素看作是二进制字符串来进行排序 ( 比如排序字符串' 110'和' 12 '的结果就跟排序数字110和12的结果不一样);使用被排序元素之外的其他值作为权重来进行排序, 甚至还可以从输入的列表、 集合、 有序集合以外的其他地方进行取值。
soRT命令不仅可以对列表进行排序, 还可以对集合进行排序, 然后返回一个列表形式的排序结果。
键的过期时间
在使用 Redis存储数据的时候. 有些数据可能在某个时间点之后就不再有用了, 用户可以使用 DEL命令显式地删除这些光用数据, ti1,可以通过 Redis的过期时间( expiration)特性来让一个键在给定的时限( timeout)之后自动被删除,当我们说一个键一带有生.存时间(timetolive)”或者一个键“会在特定时间之后过期( expire)”时,我们指的是 Redis会在这个键的过期时问到达时自动删除该键。
用于处理过期时间的 Redis命令
命令 | 示例和描述 |
PERSIST | PERSIST key-name——移除键的过期时间 |
TTL | TTL key-name——査看给定键距离过期还有多少秒 |
EXPIRE | EXPIRE key-name seconds——让给定键在指定的秒数之后过期 |
EXPIREAT | EXPIREAT key-name timestamp——将给定键的过期时间设置为给定的UNIX时间戳 |
PTTL | PTTL key-name——査看给定键距离过期时间还有多少毫秒, 这个命令在 Redis2.6或以上版本可用 |
PEXPIRE | PEXPIRE key-name milliseconds——让给定键在指定的毫秒数之后过期,这个命令在 Redis2.6或以上版本可用 |
PEXPIREAT | PEXPIREAT key-name timestamp-milliseconds——将一个毫秒级精度的UNIX时间戳设置为给定键的过期时间, 这个命令在 Redis2.6或以上版本可用 |
Redis 脚本
Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
语法
Eval 命令的基本语法如下:
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
实例
以下实例演示了 redis 脚本工作过程:
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 脚本命令
下表列出了 redis 脚本常用命令:
序号 | 命令及描述 |
1 | EVAL script numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。 |
2 | EVALSHA sha1 numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。 |
3 | SCRIPT EXISTS script [script ...] 查看指定的脚本是否已经被保存在缓存当中。 |
4 | 从脚本缓存中移除所有脚本。 |
5 | 杀死当前正在运行的 Lua 脚本。 |
6 | 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。 |
Redis 连接
Redis 连接命令主要是用于连接 redis 服务。
实例
以下实例演示了客户端如何通过密码验证连接到 redis 服务,并检测服务是否在运行:
redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
下表列出了 redis 连接的基本命令:
序号 | 命令及描述 |
1 | 验证密码是否正确 |
2 | 打印字符串 |
3 | 查看服务是否运行 |
4 | 关闭当前连接 |
5 | 切换到指定的数据库 |
Redis 服务器
Redis 服务器命令主要是用于管理 redis 服务。
实例
以下实例演示了如何获取 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 服务器命令
下表列出了 redis 服务器的相关命令:
序号 | 命令及描述 |
1 | 异步执行一个 AOF(AppendOnly File) 文件重写操作 |
2 | 在后台异步保存当前数据库的数据到磁盘 |
3 | CLIENT KILL [ip:port] [ID client-id] 关闭客户端连接 |
4 | 获取连接到服务器的客户端连接列表 |
5 | 获取连接的名称 |
6 | 在指定时间内终止运行来自客户端的命令 |
7 | CLIENT SETNAME connection-name 设置当前连接的名称 |
8 | 获取集群节点的映射数组 |
9 | 获取 Redis 命令详情数组 |
10 | 获取 Redis 命令总数 |
11 | 获取给定命令的所有键 |
12 | 返回当前服务器时间 |
13 | COMMAND INFO command-name [command-name ...] 获取指定 Redis 命令描述的数组 |
14 | 获取指定配置参数的值 |
15 | 对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写 |
16 | 修改 redis 配置参数,无需重启 |
17 | 重置 INFO 命令中的某些统计数据 |
18 | 返回当前数据库的 key 的数量 |
19 | 获取 key 的调试信息 |
20 | 让 Redis 服务崩溃 |
21 | 删除所有数据库的所有key |
22 | 删除当前数据库的所有key |
23 | 获取 Redis 服务器的各种信息和统计数值 |
24 | 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示 |
25 | 实时打印出 Redis 服务器接收到的命令,调试用 |
26 | 返回主从实例所属的角色 |
27 | 同步保存数据到硬盘 |
28 | 异步保存数据到硬盘,并关闭服务器 |
29 | 将当前服务器转变为指定服务器的从属服务器(slave server) |
30 | 管理 redis 的慢日志 |
31 | 用于复制功能(replication)的内部命令 |
篇幅有限,我们先介绍这么多,下一篇我们再介绍其他命令
参考:
http://www.runoob.com/redis/redis-commands.html
http://www.redis.net.cn/tutorial/3506.html
https://www.yiibai.com/redis/redis_commands.html