Redis命令是用于在Redis服务器上执行一些操作。
要在Redis服务器上运行命令,需要一个Redis客户端。Redis客户端在Redis包中有提供,这个包在我们前面的安装教程中就有安装过了。
语法
以下是Redis客户端的基本语法。
[yiibai@ubuntu:~]$ redis-cli
Shell
示例
以下示例说明了如何启动Redis客户端。
要启动Redis客户端,请打开终端并键入命令redis-cli
。 这将连接到您的本地Redis服务器,现在可以运行任何的Redis命令了。
[yiibai@ubuntu:~]$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
Shell
在上面的示例中,连接到到在本地机器上运行的Redis服务器并执行PING
命令,该命令检查服务器是否正在运行。
在远程服务器上运行命令
要在Redis远程服务器上运行命令,需要通过客户端redis-cli
连接到服务器
语法
[yiibai@ubuntu:~]$ redis-cli -h host -p port -a password
Shell
示例
以下示例显示如何连接到Redis远程服务器,在主机(host)127.0.0.1
,端口(port)6379
上运行,并使用密码为 mypass
。
[yiibai@ubuntu:~]$ 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中的键。以下是使用redis键命令的语法。
Redis键命令
下表列出了与键相关的一些基本命令。
编号 | 命令 | 描述 |
1 | DEL key | 此命令删除一个指定键(如果存在)。 |
2 | DUMP key | 此命令返回存储在指定键的值的序列化版本。 |
3 | EXISTS key | 此命令检查键是否存在。 |
4 | EXPIRE key seconds | 设置键在指定时间秒数之后到期/过期。 |
5 | EXPIREAT key timestamp | 设置在指定时间戳之后键到期/过期。这里的时间是Unix时间戳格式。 |
6 | PEXPIRE key milliseconds | 设置键的到期时间(以毫秒为单位)。 |
7 | PEXPIREAT key milliseconds-timestamp | 以Unix时间戳形式来设置键的到期时间(以毫秒为单位)。 |
8 | KEYS pattern | 查找与指定模式匹配的所有键。 |
9 | MOVE key db | 将键移动到另一个数据库。 |
10 | PERSIST key | 删除指定键的过期时间,得永生。 |
11 | PTTL key | 获取键的剩余到期时间。 |
12 | RANDOMKEY | 从Redis返回一个随机的键。 |
13 | RENAME key newkey | 更改键的名称。 |
14 | PTTL key | 获取键到期的剩余时间(以毫秒为单位)。 |
15 | RENAMENX key newkey | 如果新键不存在,重命名键。 |
16 | TYPE key | 返回存储在键中的值的数据类型。 |
Redis字符串命令
下表列出了一些用于在Redis中管理字符串的基本命令。
编号 | 命令 | 描述说明 |
1 | SET key value | 此命令设置指定键的值。 |
2 | GET key | 获取指定键的值。 |
3 | GETRANGE key start end | 获取存储在键上的字符串的子字符串。 |
4 | GETSET key value | 设置键的字符串值并返回其旧值。 |
5 | GETBIT key offset | 返回在键处存储的字符串值中偏移处的位值。 |
6 | MGET key1 [key2..] | 获取所有给定键的值 |
7 | SETBIT key offset value | 存储在键上的字符串值中设置或清除偏移处的位 |
8 | SETEX key seconds value | 使用键和到期时间来设置值 |
9 | SETNX key value | 设置键的值,仅当键不存在时 |
10 | SETRANGE key offset value | 在指定偏移处开始的键处覆盖字符串的一部分 |
11 | STRLEN key | 获取存储在键中的值的长度 |
12 | MSET key value [key value …] | 为多个键分别设置它们的值 |
13 | MSETNX key value [key value …] | 为多个键分别设置它们的值,仅当键不存在时 |
14 | PSETEX key milliseconds value | 设置键的值和到期时间(以毫秒为单位) |
15 | INCR key | 将键的整数值增加 |
16 | INCRBY key increment | 将键的整数值按给定的数值增加 |
17 | INCRBYFLOAT key increment | 将键的浮点值按给定的数值增加 |
18 | DECR key | 将键的整数值减 |
19 | DECRBY key decrement | 按给定数值减少键的整数值 |
20 | APPEND key value | 将指定值附加到键 |
Redis哈希命令
下表列出了与哈希/散列相关的一些基本命令。
序号 | 命令 | 说明 |
1 | HDEL key field2 [field2] | 删除一个或多个哈希字段。 |
2 | HEXISTS key field | 判断是否存在散列字段。 |
3 | HGET key field | 获取存储在指定键的哈希字段的值。 |
4 | HGETALL key | 获取存储在指定键的哈希中的所有字段和值 |
5 | HINCRBY key field increment | 将哈希字段的整数值按给定数字增加 |
6 | HINCRBYFLOAT key field increment | 将哈希字段的浮点值按给定数值增加 |
7 | HKEYS key | 获取哈希中的所有字段 |
8 | HLEN key | 获取散列中的字段数量 |
9 | HMGET key field1 [field2] | 获取所有给定哈希字段的值 |
10 | HMSET key field1 value1 [field2 value2 ] | 为多个哈希字段分别设置它们的值 |
11 | HSET key field value | 设置散列字段的字符串值 |
12 | HSETNX key field value | 仅当字段不存在时,才设置散列字段的值 |
13 | HVALS key | 获取哈希中的所有值 |
Redis列表命令
下表列出了与列表相关的一些基本命令。
序号 | 命令 | 说明 |
1 | BLPOP key1 [key2 ] timeout | 删除并获取列表中的第一个元素,或阻塞,直到有一个元素可用 |
2 | BRPOP key1 [key2 ] timeout | 删除并获取列表中的最后一个元素,或阻塞,直到有一个元素可用 |
3 | BRPOPLPUSH source destination timeout | 从列表中弹出值,将其推送到另一个列表并返回它; 或阻塞,直到一个可用 |
4 | LINDEX key index | 通过其索引从列表获取元素 |
5 | LINSERT key BEFORE/AFTER pivot value | 在列表中的另一个元素之前或之后插入元素 |
6 | LLEN key | 获取列表的长度 |
7 | LPOP key | 删除并获取列表中的第一个元素 |
8 | LPUSH key value1 [value2] | 将一个或多个值添加到列表 |
9 | LPUSHX key value | 仅当列表存在时,才向列表添加值 |
10 | LRANGE key start stop | 从列表中获取一系列元素 |
11 | LREM key count value | 从列表中删除元素 |
12 | LSET key index value | 通过索引在列表中设置元素的值 |
13 | LTRIM key start stop | 修剪列表的指定范围 |
14 | RPOP key | 删除并获取列表中的最后一个元素 |
15 | RPOPLPUSH source destination | 删除列表中的最后一个元素,将其附加到另一个列表并返回 |
16 | RPUSH key value1 [value2] | 将一个或多个值附加到列表 |
17 | RPUSHX key value | 仅当列表存在时才将值附加到列表 |
Redis集合命令
下表列出了与集合相关的一些基本命令。
序号 | 命令 | 说明 |
1 | SADD key member1 [member2] | 将一个或多个成员添加到集合 |
2 | SCARD key | 获取集合中的成员数 |
3 | SDIFF key1 [key2] | 减去多个集合 |
4 | SDIFFSTORE destination key1 [key2] | 减去多个集并将结果集存储在键中 |
5 | SINTER key1 [key2] | 相交多个集合 |
6 | SINTERSTORE destination key1 [key2] | 交叉多个集合并将结果集存储在键中 |
7 | SISMEMBER key member | 判断确定给定值是否是集合的成员 |
8 | SMOVE source destination member | 将成员从一个集合移动到另一个集合 |
9 | SPOP key | 从集合中删除并返回随机成员 |
10 | SRANDMEMBER key [count] | 从集合中获取一个或多个随机成员 |
11 | SREM key member1 [member2] | 从集合中删除一个或多个成员 |
12 | SUNION key1 [key2] | 添加多个集合 |
13 | SUNIONSTORE destination key1 [key2] | 添加多个集并将结果集存储在键中 |
14 | SSCAN key cursor [MATCH pattern] [COUNT count] | 递增地迭代集合中的元素 |
Redis集排序集合命令
Redis HyperLogLog是一种使用随机化的算法,以少量内存提供集合中唯一元素数量的近似值。
HyperLogLog 可以接受多个元素作为输入,并给出输入元素的基数估算值:
- 基数:集合中不同元素的数量。比如 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基数就是 3 。
- 估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合理的范围之内。
HyperLogLog 的优点是,即使输入元素的数量或者体积非常非常大,计算基数所需的空间总是固定的、并且是很小的。
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以
HyperLogLog 不能像集合那样,返回输入的各个元素。
下表列出了 HyperLogLog 相关的一些基本命令。
序号 | 命令 | 说明 |
1 | PFADD key element [element …] | 将指定的元素添加到指定的HyperLogLog 中。 |
2 | PFCOUNT key [key …] | 返回给定 HyperLogLog 的基数估算值。 |
3 | PFMERGE destkey sourcekey [sourcekey …] | 将多个 HyperLogLog 合并为一个 HyperLogLog |
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 发布订阅(pub/sub)实现了消息系统,发送者(在redis术语中称为发布者)在接收者(订阅者)接收消息时发送消息。传送消息的链路称为信道。
在Redis中,客户端可以订阅任意数量的信道。
Redis发布订阅命令
下表列出了与Redis发布订阅相关的一些基本命令。
序号 | 命令 | 说明 |
1 | PSUBSCRIBE pattern [pattern …] | 订阅一个或多个符合给定模式的频道。 |
2 | PUBSUB subcommand [argument [argument …]] | 查看订阅与发布系统状态。 |
3 | PUBLISH channel message | 将信息发送到指定的频道。 |
4 | PUNSUBSCRIBE [pattern [pattern …]] | 退订所有给定模式的频道。 |
5 | SUBSCRIBE channel [channel …] | 订阅给定的一个或多个频道的信息。 |
6 | UNSUBSCRIBE [channel [channel …]] | 退订给定的频道。 |
Redis事务允许在单个步骤中执行一组命令。以下是事务的两个属性:
- 事务中的所有命令作为单个隔离操作并按顺序执行。不可以在执行Redis事务的中间向另一个客户端发出的请求。
- Redis事务也是原子的。原子意味着要么处理所有命令,要么都不处理。
语法示例
Redis事务由命令MULTI
命令启动,然后需要传递一个应该在事务中执行的命令列表,然后整个事务由EXEC
命令执行。
redis 127.0.0.1:6379> MULTI
OK
List of commands here
redis 127.0.0.1:6379> EXEC
Shell
示例
以下示例说明了如何启动和执行Redis事务。
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET mykey "redis"
QUEUED
redis 127.0.0.1:6379> GET mykey
QUEUED
redis 127.0.0.1:6379> INCR visitors
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "redis"
3) (integer) 1
Shell
Redis事务命令
下表列出了与Redis事务相关的一些基本命令。
序号 | 命令 | 说明 |
1 | DISCARD | 丢弃在MULTI之后发出的所有命令 |
2 | EXEC | 执行MULTI后发出的所有命令 |
3 | MULTI | 标记事务块的开始 |
4 | UNWATCH | 取消 WATCH 命令对所有 key 的监视。 |
5 | WATCH key [key …] | 监视给定的键以确定MULTI / EXEC块的执行 |
Redis脚本用于使用Lua解释器来执行脚本。从Redis 2.6.0
版开始内置到Redis中。使用脚本的命令是EVAL命令。
语法
以下是EVAL
命令的基本语法。
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
Shell
示例
以下示例说明了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"
Shell
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 | SCRIPT FLUSH | 从脚本缓存中删除所有脚本。 |
5 | SCRIPT KILL | 杀死当前正在执行的脚本。 |
6 | SCRIPT LOAD script | 将指定的Lua脚本加载到脚本缓存中。 |
Redis中的连接命令基本上是用于管理与Redis服务器的客户端连接。
示例
以下示例说明客户端如何向Redis服务器验证自身,并检查服务器是否正在运行。
redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
Shell
Redis连接命令
下表列出了与Redis连接相关的一些基本命令。
序号 | 命令 | 说明 |
1 | AUTH password | 使用给定的密码验证服务器 |
2 | ECHO message | 打印给定的字符串信息 |
3 | PING | 检查服务器是否正在运行 |
4 | QUIT | 关闭当前连接 |
5 | SELECT index | 更改当前连接的所选数据库 |
Redis服务器命令基本上是用于管理Redis服务器。
示例
以下示例说明了如何获取有关服务器的所有统计信息和信息。
127.0.0.1:6379> info
# Server
redis_version:2.8.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:8f6097d7914679ca
redis_mode:standalone
os:Linux 3.19.0-25-generic i686
arch_bits:32
multiplexing_api:epoll
gcc_version:4.8.2
process_id:1004
run_id:1e53acea2aa628199c4e438a3ed815d96eebc036
tcp_port:6379
uptime_in_seconds:888450
uptime_in_days:10
hz:10
lru_clock:1861984
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:424872
used_memory_human:414.91K
used_memory_rss:6709248
used_memory_peak:424464
used_memory_peak_human:414.52K
used_memory_lua:22528
mem_fragmentation_ratio:15.79
mem_allocator:jemalloc-3.4.1
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1486607123
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
# Stats
total_connections_received:1
total_commands_processed:263
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:257
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:4793
# 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:24.65
used_cpu_user:15.84
used_cpu_sys_children:0.08
used_cpu_user_children:0.00
# Keyspace
db0:keys=14,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
127.0.0.1:6379>
Shell
Redis服务器命令
下表列出了与Redis服务器相关的一些基本命令。
序号 | 命令 | 说明 |
1 | BGREWRITEAOF | 异步重写仅追加的文件 |
2 | BGSAVE | 将数据集异步保存到磁盘 |
3 | CLIENT KILL [ip:port] [ID client-id] | 杀死或断开指定的客户端的连接 |
4 | CLIENT LIST | 获取到服务器的客户端连接列表 |
5 | CLIENT GETNAME | 获取当前连接的名称 |
6 | CLIENT PAUSE timeout | 在指定时间内停止处理来自客户端的命令 |
7 | CLIENT SETNAME connection-name | 设置当前连接名称 |
8 | CLUSTER SLOTS | 获取群集插槽到节点映射的数组 |
9 | COMMAND | 获取Redis命令详细信息的数组 |
10 | COMMAND COUNT | 获取Redis命令的总数 |
11 | COMMAND GETKEYS | 提取键给出一个完整的Redis的命令 |
12 | BGSAVE | 将数据集异步保存到磁盘 |
13 | COMMAND INFO command-name [command-name …] | 获取特定Redis命令详细信息的数组 |
14 | CONFIG GET parameter | 获取配置参数的值 |
15 | CONFIG REWRITE | 使用内存中配置来重写配置文件 |
16 | CONFIG SET parameter value | 将配置参数设置为给定值 |
17 | CONFIG RESETSTAT | 重置由INFO返回的统计信息 |
18 | DBSIZE | 返回所选数据库中的键数量 |
19 | DEBUG OBJECT key | 获取有关键的调试信息 |
20 | DEBUG SEGFAULT | 使服务器崩溃 |
21 | FLUSHALL | 从所有数据库中删除所有键 |
22 | FLUSHDB | 删除当前数据库中的所有键 |
23 | INFO [section] | 获取有关服务器的信息和统计信息 |
24 | LASTSAVE | 获取上次成功保存到磁盘的UNIX时间戳 |
25 | MONITOR | 监听服务器实时接收的所有请求 |
26 | ROLE | 返回实例在复制上下文中的角色 |
27 | SAVE | 将数据集同步保存到磁盘 |
28 | SHUTDOWN [NOSAVE] [SAVE] | 将数据集同步保存到磁盘,然后关闭服务器 |
29 | SLAVEOF host port | 使服务器成为另一个实例的从属,或将其提升作为主服务器 |
30 | SLOWLOG subcommand [argument] | 管理Redis慢查询日志 |
31 | SYNC | 用于复制的命令 |
32 | TIME | 返回当前服务器的时间 |