Redis 6.x——键值与服务器相关命令

📅 2026/7/12 12:05:09 👁️ 阅读次数 📝 编程学习
Redis 6.x——键值与服务器相关命令

键值与服务器相关命令

    • 1、键值相关命令
      • 1.1、KEYS
      • 1.2、SCAN
      • 1.3、EXISTS
      • 1.4、DEL
      • 1.5、EXPIRE
      • 1.6、TTL
      • 1.7、SELECT
      • 1.8、MOVE
      • 1.9、PERSIST
      • 1.10、RANDOMKEY
      • 1.11、RENAME
      • 1.12、TYPE
    • 2、服务器相关命令
      • 2.1、PING
      • 2.2、ECHO
      • 2.3、QUIT
      • 2.4、DBSIZE
      • 2.5、INFO
      • 2.6、MONITOR
      • 2.7、CONFIG GET
      • 2.8、FLUSHDB
      • 2.9、FLUSHALL

1、键值相关命令

1.1、KEYS

KEYS用于返回满足pattern的所有key,pattern支持以下通配符。

  • *:匹配任意字符。
  • ?​:匹配一个任意字符。
  • [​]​:匹配方括号内任一单个字符,例如[a-z]表示匹配26个小写字母中的任意一个字符,a[b-e]表示匹配ab、ac、ad和ae字符串。
  • \x:匹配特殊字符,例如\?​、*。
# 添加测试数据127.0.0.1:6379>MSET one1two2three3four4five5OK# 查看当前数据库下的所有key127.0.0.1:6379>KEYS *1)"one"2)"two"3)"three"4)"four"5)"five"# 查找第一个字符为f的key127.0.0.1:6379>KEYS f*1)"four"2)"five"# 查找第一个字符为t的key127.0.0.1:6379>KEYS t??1)"two"# 查找第二个字符为o的key127.0.0.1:6379>KEYS ?o*1)"four"# 查找以f开头的,包含字母字符串的key127.0.0.1:6379>KEYS f[a-z]*1)"four"2)"five"

使用KEYS*可以得到当前Redis数据库中的所有key。

1.2、SCAN

SCAN用于迭代数据库中的key。SCAN命令是一个基于游标的迭代器,每次被调用之后都会向用户返回一个新游标,用户在下次迭代时需要使用这个新游标作为SCAN命令的游标参数,以此来延续之前的迭代过程。

SCAN返回一个包含两个元素的数组,第一个元素是用于进行下一次迭代的新游标,而第二个元素则是一个数组,这个数组中包含了所有被迭代的元素。如果返回的新游标为0则表示迭代已结束。

SCAN命令的基本语法如下。

SCAN cursor[MATCH pattern][COUNT count]
  • cursor:游标。
  • pattern:匹配的模式。
  • count:指定从数据集里返回多少元素,默认值为10。

使用SET命令创立50条String类型的数据。限于篇幅本节只列出创建2条数据的命令,剩下48条数据,请自行创建。

127.0.0.1:6379>SET key:11OK127.0.0.1:6379>SET key:22OK

使用SCAN命令迭代数据库中的key。

127.0.0.1:6379>SCAN0# 使用 0 作为游标,开始新的迭代1)"20"# 第1次迭代时返回的游标2)1)"key:40"2)"key:49"3)"key:48"4)"key:24"5)"key:34"6)"key:3"7)"key:37"8)"key:5"9)"key:32"10)"key:33"11)"key:7"127.0.0.1:6379>SCAN20# 使用第一次迭代时返回的游标 17 开始新的迭代1)"26"# 第2次迭代时返回的游标2)1)"key:42"2)"key:13"3)"key:30"4)"key:20"5)"key:38"6)"key:25"7)"key:43"8)"key:14"9)"key:47"10)"key:28"

1.3、EXISTS

EXISTS用于查看key是否存在,如果key存在则返回1,否则返回0。

127.0.0.1:6379>SET name xinping OK127.0.0.1:6379>EXISTS name(integer)1127.0.0.1:6379>EXISTS address(integer)0

结果表明不存在address,但是存在name。

1.4、DEL

DEL用于删除key,返回被删除key的个数。

127.0.0.1:6379>DEL name(integer)1127.0.0.1:6379>DEL name(integer)0

在本例中可以看出name是存在的,删除后就不存在了。

1.5、EXPIRE

EXPIRE用于设置key的过期时间,单位为秒。超过该时间后,key被自动删除。

返回值为1表示已设置key的过期时间;返回值为0则表示key不存在,不能设置其过期时间。

如果key已经存在过期时间,则通过EXPIRE设置的时候会覆盖之前的过期时间。

127.0.0.1:6379>SET cache_page"www.jd.com"OK127.0.0.1:6379>EXPIRE cache_page60(integer)1

在本例中,使用EXPIRE让cache_page存在60s。等待60s后cache_page被自动删除,就不存在了。可以使用EXISTS查看cache_page。

127.0.0.1:6379>EXISTS cache_page(integer)0

1.6、TTL

TTL用于获取key所剩的过期时间。该命令以秒为单位返回key的剩余时间,如果key不存在或没有超时设置,则返回-2。

127.0.0.1:6379>SET cache_page2"www.jd.com"OK127.0.0.1:6379>EXPIRE cache_page260(integer)1127.0.0.1:6379>TTL cache_page2(integer)56127.0.0.1:6379>TTL cache_page2(integer)35127.0.0.1:6379>TTL cache_page2(integer)25127.0.0.1:6379>TTL cache_page2(integer)8127.0.0.1:6379>TTL cache_page2(integer)-2

在本例中,我们设置cache_page2的过期时间是60s,然后我们不断用TTL来获取cache_page2的剩余时间,直至为-2,说明cache_page2已过期。

1.7、SELECT

SELECT用于选择数据库,数据库为0~15(一共16个数据库)​。

SELECT1

在本例中,选择数据库1。

1.8、MOVE

MOVE,用于将当前数据库中的key转移到其他数据库中。

127.0.0.1:6379[1]>SELECT0OK127.0.0.1:6379>SET age20OK127.0.0.1:6379>GET age"20"127.0.0.1:6379>MOVE age1(integer)1127.0.0.1:6379>GET age(nil)127.0.0.1:6379[1]>SELECT1OK127.0.0.1:6379[1]>GET age"20"

在本例中,我们先显式地选择了数据库0,然后在这个数据库中设置一个key,即age;接下来我们将age从数据库0转移到数据库1;然后我们在数据库0中确认了没有age,但在数据库1中存在age,说明转移age成功了。

1.9、PERSIST

PERSIST用于删除key的过期时间。

127.0.0.1:6379>SET age20OK127.0.0.1:6379>EXPIRE age20(integer)1127.0.0.1:6379>TTL age(integer)18127.0.0.1:6379>PERSIST age(integer)1127.0.0.1:6379>PERSIST age(integer)0127.0.0.1:6379>TTL age(integer)-1

在本例中,我们手动地删除了age的过期时间。

1.10、RANDOMKEY

RANDOMKEY用于随机返回key空间中的一个key。

127.0.0.1:6379>SET age120OK127.0.0.1:6379>SET age221OK127.0.0.1:6379>RANDOMKEY"age2"127.0.0.1:6379>RANDOMKEY"age1"

通过本例的结果可以看到,取key时是随机的。

1.11、RENAME

RENAME用于重命名key。

127.0.0.1:6379>SET age320OK127.0.0.1:6379>RENAME age3 age4 OK127.0.0.1:6379>GET age4"20"

在本例中,我们看到age3被我们成功改名为age4了。

1.12、TYPE

TYPE用于获取key关联值的类型,并以字符串的格式返回结果。返回的字符串为String、List、Set、Hash和Sorted Set,如果key不存在则返回none。

127.0.0.1:6379>SET name wangwu OK127.0.0.1:6379>TYPE name string127.0.0.1:6379>LPUSH ls1 a(integer)1127.0.0.1:6379>TYPE ls1 List127.0.0.1:6379>TYPE age none

在本例中,可以看出使用TYPE命令能返回key关联值的类型。

2、服务器相关命令

2.1、PING

PING使用客户端向Redis服务器发送一个“PING”字符串。如果Redis服务器运行正常的话,会返回一个“PONG”字符串,用来测试客户端与Redis服务器的连接是否依然生效。

127.0.0.1:6379>PING PONG

2.2、ECHO

可以通过ECHO在命令行输出一些内容。

127.0.0.1:6379>ECHO"hello world""hello world"

2.3、QUIT

可以通过QUIT退出当前Redis连接。

127.0.0.1:6379>QUIT[root@bogon bin]#

2.4、DBSIZE

DBSIZE用于查看当前数据库中key的数目。

127.0.0.1:6379>DBSIZE(integer)2127.0.0.1:6379>KEYS *1)"name"2)"ls1"

在本例中,可以看出当前数据库中有两个key。

2.5、INFO

INFO用于查看Redis服务器的各种信息和统计数值。

127.0.0.1:6379>INFO# Server #Redis的服务器信息redis_version:6.0.6 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:b50d302201129968 redis_mode:standalone os:Linux3.10.0-693.11.6.el7.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll# Redis的事件循环机制atomicvar_api:atomic-builtin gcc_version:4.8.5 process_id:2800 run_id:4dd2e989b43c18f63d32eab9745d98abe00929ae# 标识Redis服务器的随机值tcp_port:6379 uptime_in_seconds:7# Redis服务器启动的时间(单位s)uptime_in_days:0# Redis服务器启动的时间(单位day)hz:10 lru_clock:6416788 executable:/root/redis-server config_file:/usr/local/redis/conf/redis.conf# Clients # 已连接客户端信息connected_clients:1# 连接的客户端数client_longest_output_list:0# 当前客户端连接的最大输出列表client_biggest_input_buf:0# 当前客户端连接的最大输入bufferblocked_clients:0# 被阻塞的客户端数# Memory # 内存信息used_memory:828512# 使用内存(单位Byte)used_memory_human:809.09K# 以更直观的单位显示分配的内存总量used_memory_rss:4763648# 系统给Redis分配的内存(即常驻内存)used_memory_rss_human:4.54M used_memory_peak:828512# 内存使用的峰值大小used_memory_peak_human:809.09K# 以更直观的单位显示内存使用峰值used_memory_peak_perc:100.13% used_memory_overhead:815278 used_memory_startup:765648 used_memory_dataset:13234 used_memory_dataset_perc:21.05% total_system_memory:1022627840 total_system_memory_human:975.25M used_memory_lua:37888# Lua引擎使用的内存used_memory_lua_human:37.00K maxmemory:0 maxmemory_human:0B maxmemory_policy:noeviction mem_fragmentation_ratio:5.75# used_memory_rss/used_memory比例mem_allocator:jemalloc-4.0.3# 内存分配器active_defrag_running:0 lazyfree_pending_objects:0# Persistence # 持久化的相关信息loading:0 rdb_changes_since_last_save:0# 自上次RDB保存以后更改的次数rdb_bgsave_in_progress:0# 表示当前是否在进行bgsave操作,如果是则为1rdb_last_save_time:1516366221# 上次保存RDB文件的时间戳rdb_last_bgsave_status:ok# 上次保存的状态rdb_last_bgsave_time_sec:-1# 上次保存RDB文件已花费的时间(单位s)rdb_current_bgsave_time_sec:-1# 目前保存RDB文件已花费的时间(单位s)rdb_last_cow_size:0 aof_enabled:0# 是否开启AOF,默认没开启aof_rewrite_in_progress:0# 标识AOF的rewrite操作是否在进行aof_rewrite_scheduled:0# 标识是否将要在RDB保存操作结束后执行aof_last_rewrite_time_sec:-1# 上次rewrite操作使用的时间(单位s)aof_current_rewrite_time_sec:-1# 如果rewrite操作正在进行,则记录所使用的时间aof_last_bgrewrite_status:ok# 上次rewrite操作的状态aof_last_write_status:ok aof_last_cow_size:0# 开启AOF后增加的一些信息aof_current_size:0# AOF当前大小aof_base_size:0# AOF上次启动或rewrite的大小aof_pending_rewrite:0# 同上面的aof_rewrite_scheduledaof_buffer_length:0# aof buffer的大小aof_rewrite_buffer_length:0# aof rewrite buffer的大小aof_pending_bio_fsync:0# 后台I/O队列中等待fsync任务的个数aof_delayed_fsync:0# 延迟的fsync计数器TODO-----------------------------# Stats # 一般统计信息total_connections_received:1# 自启动起连接过的总数total_commands_processed:1# 自启动起执行命令的总数instantaneous_ops_per_sec:0# 每秒执行的命令个数total_net_input_bytes:31 total_net_output_bytes:10163 instantaneous_input_kbps:0.01 instantaneous_output_kbps:6.14 rejected_connections:0# 因为最大客户端连接限制而导致被拒绝连接的个数sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0# 自启动起过期的key的个数evicted_keys:0# 因为内存大小限制而被驱逐出去的key的个数keyspace_hits:0# 在main dictionary(todo)中成功查到的key的个数keyspace_misses:0# 在main dictionary(todo)中未查到的key的个数pubsub_channels:0# 发布/订阅频道数pubsub_patterns:0# 发布/订阅模式数latest_fork_usec:0# 上次的fork操作使用的时间(单位ms)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:4066f05f8e6cfcf9228a1450a25efaa551f954a2 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 # CPU计算量的统计信息used_cpu_sys:0.01# Redis服务器的系统CPU使用率used_cpu_user:0.00# Redis服务器的用户CPU使用率used_cpu_sys_children:0.00# 后台进程的系统CPU使用率used_cpu_user_children:0.00# 后台进程的用户CPU使用率# Cluster # Redis集群信息cluster_enabled:0# Keyspace # 数据库相关统计信息db0:keys=1,expires=0,avg_ttl=0# 数据库0中的key的个数

2.6、MONITOR

MONITOR用于实时输出Redis服务器接收到的命令,可供调试使用。

首先使用redis-cli命令打开第一个客户端,执行以下命令。

127.0.0.1:6379>MONITOR OK

然后使用redis-cli命令打开第二个客户端,执行以下命令存储数据。

127.0.0.1:6379>SET name wangwu OK127.0.0.1:6379>GET name"wangwu"

最后查看第一个客户端,会看到如下信息。

127.0.0.1:6379>MONITOR OK1525610398.977423[0127.0.0.1:53469]"set""name""wangwu"1525610400.361838[0127.0.0.1:53469]"get""name"

从结果可看出,此Redis服务器目前接收了命令set和get。

2.7、CONFIG GET

CONFIG GET用于获取Redis服务器的配置信息。

127.0.0.1:6379>CONFIG GETdir1)"dir"2)"/usr/local/redis/bin"

在本例中,我们使用CONFIG GET获取了dir参数配置的值。如果想获取全部参数配置的值,执行CONFIG GET*就可以将全部参数配置的值都显示出来。

2.8、FLUSHDB

FLUSHDB用于删除当前选择的数据库中的所有key。

127.0.0.1:6379>SELECT0OK127.0.0.1:6379>KEYS *1)"name"2)"age"127.0.0.1:6379>FLUSHDB OK

在本例中,我们将数据库0中的key都删除了。

2.9、FLUSHALL

FLUSHALL用于删除所有数据库中的key。

127.0.0.1:6379>FLUSHALL OK127.0.0.1:6379>KEYS *#查询数据库0的所有key(empty list orset)127.0.0.1:6379>SELECT1#使用数据库1OK127.0.0.1:6379[1]>KEYS *#查询数据库1的所有key(empty list orset)

在本例中,我们使用FLUSHALL命令删除了所有数据库中的key,查看数据库0中的key,发现都被删除了;然后切换到数据库1,发现数据库1中的key也被删除了。