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

将键的整数值增加1

16

INCRBY key increment

将键的整数值按给定的数值增加

17

INCRBYFLOAT key increment

将键的浮点值按给定的数值增加

18

DECR key

将键的整数值减1

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

返回当前服务器的时间