Redis 6.x——键值与服务器相关命令 键值与服务器相关命令1、键值相关命令1.1、KEYS1.2、SCAN1.3、EXISTS1.4、DEL1.5、EXPIRE1.6、TTL1.7、SELECT1.8、MOVE1.9、PERSIST1.10、RANDOMKEY1.11、RENAME1.12、TYPE2、服务器相关命令2.1、PING2.2、ECHO2.3、QUIT2.4、DBSIZE2.5、INFO2.6、MONITOR2.7、CONFIG GET2.8、FLUSHDB2.9、FLUSHALL1、键值相关命令1.1、KEYSKEYS用于返回满足pattern的所有keypattern支持以下通配符。*匹配任意字符。?​匹配一个任意字符。[​]​匹配方括号内任一单个字符例如[a-z]表示匹配26个小写字母中的任意一个字符a[b-e]表示匹配ab、ac、ad和ae字符串。\x匹配特殊字符例如\​、*。# 添加测试数据127.0.0.1:6379MSET one1two2three3four4five5OK# 查看当前数据库下的所有key127.0.0.1:6379KEYS *1)one2)two3)three4)four5)five# 查找第一个字符为f的key127.0.0.1:6379KEYS f*1)four2)five# 查找第一个字符为t的key127.0.0.1:6379KEYS t??1)two# 查找第二个字符为o的key127.0.0.1:6379KEYS ?o*1)four# 查找以f开头的包含字母字符串的key127.0.0.1:6379KEYS f[a-z]*1)four2)five使用KEYS*可以得到当前Redis数据库中的所有key。1.2、SCANSCAN用于迭代数据库中的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:6379SET key:11OK127.0.0.1:6379SET key:22OK使用SCAN命令迭代数据库中的key。127.0.0.1:6379SCAN0# 使用 0 作为游标开始新的迭代1)20# 第1次迭代时返回的游标2)1)key:402)key:493)key:484)key:245)key:346)key:37)key:378)key:59)key:3210)key:3311)key:7127.0.0.1:6379SCAN20# 使用第一次迭代时返回的游标 17 开始新的迭代1)26# 第2次迭代时返回的游标2)1)key:422)key:133)key:304)key:205)key:386)key:257)key:438)key:149)key:4710)key:281.3、EXISTSEXISTS用于查看key是否存在如果key存在则返回1否则返回0。127.0.0.1:6379SET name xinping OK127.0.0.1:6379EXISTS name(integer)1127.0.0.1:6379EXISTS address(integer)0结果表明不存在address但是存在name。1.4、DELDEL用于删除key返回被删除key的个数。127.0.0.1:6379DEL name(integer)1127.0.0.1:6379DEL name(integer)0在本例中可以看出name是存在的删除后就不存在了。1.5、EXPIREEXPIRE用于设置key的过期时间单位为秒。超过该时间后key被自动删除。返回值为1表示已设置key的过期时间返回值为0则表示key不存在不能设置其过期时间。如果key已经存在过期时间则通过EXPIRE设置的时候会覆盖之前的过期时间。127.0.0.1:6379SET cache_pagewww.jd.comOK127.0.0.1:6379EXPIRE cache_page60(integer)1在本例中使用EXPIRE让cache_page存在60s。等待60s后cache_page被自动删除就不存在了。可以使用EXISTS查看cache_page。127.0.0.1:6379EXISTS cache_page(integer)01.6、TTLTTL用于获取key所剩的过期时间。该命令以秒为单位返回key的剩余时间如果key不存在或没有超时设置则返回-2。127.0.0.1:6379SET cache_page2www.jd.comOK127.0.0.1:6379EXPIRE cache_page260(integer)1127.0.0.1:6379TTL cache_page2(integer)56127.0.0.1:6379TTL cache_page2(integer)35127.0.0.1:6379TTL cache_page2(integer)25127.0.0.1:6379TTL cache_page2(integer)8127.0.0.1:6379TTL cache_page2(integer)-2在本例中我们设置cache_page2的过期时间是60s然后我们不断用TTL来获取cache_page2的剩余时间直至为-2说明cache_page2已过期。1.7、SELECTSELECT用于选择数据库数据库为015一共16个数据库​。SELECT1在本例中选择数据库1。1.8、MOVEMOVE用于将当前数据库中的key转移到其他数据库中。127.0.0.1:6379[1]SELECT0OK127.0.0.1:6379SET age20OK127.0.0.1:6379GET age20127.0.0.1:6379MOVE age1(integer)1127.0.0.1:6379GET age(nil)127.0.0.1:6379[1]SELECT1OK127.0.0.1:6379[1]GET age20在本例中我们先显式地选择了数据库0然后在这个数据库中设置一个key即age接下来我们将age从数据库0转移到数据库1然后我们在数据库0中确认了没有age但在数据库1中存在age说明转移age成功了。1.9、PERSISTPERSIST用于删除key的过期时间。127.0.0.1:6379SET age20OK127.0.0.1:6379EXPIRE age20(integer)1127.0.0.1:6379TTL age(integer)18127.0.0.1:6379PERSIST age(integer)1127.0.0.1:6379PERSIST age(integer)0127.0.0.1:6379TTL age(integer)-1在本例中我们手动地删除了age的过期时间。1.10、RANDOMKEYRANDOMKEY用于随机返回key空间中的一个key。127.0.0.1:6379SET age120OK127.0.0.1:6379SET age221OK127.0.0.1:6379RANDOMKEYage2127.0.0.1:6379RANDOMKEYage1通过本例的结果可以看到取key时是随机的。1.11、RENAMERENAME用于重命名key。127.0.0.1:6379SET age320OK127.0.0.1:6379RENAME age3 age4 OK127.0.0.1:6379GET age420在本例中我们看到age3被我们成功改名为age4了。1.12、TYPETYPE用于获取key关联值的类型并以字符串的格式返回结果。返回的字符串为String、List、Set、Hash和Sorted Set如果key不存在则返回none。127.0.0.1:6379SET name wangwu OK127.0.0.1:6379TYPE name string127.0.0.1:6379LPUSH ls1 a(integer)1127.0.0.1:6379TYPE ls1 List127.0.0.1:6379TYPE age none在本例中可以看出使用TYPE命令能返回key关联值的类型。2、服务器相关命令2.1、PINGPING使用客户端向Redis服务器发送一个“PING”字符串。如果Redis服务器运行正常的话会返回一个“PONG”字符串用来测试客户端与Redis服务器的连接是否依然生效。127.0.0.1:6379PING PONG2.2、ECHO可以通过ECHO在命令行输出一些内容。127.0.0.1:6379ECHOhello worldhello world2.3、QUIT可以通过QUIT退出当前Redis连接。127.0.0.1:6379QUIT[rootbogon bin]#2.4、DBSIZEDBSIZE用于查看当前数据库中key的数目。127.0.0.1:6379DBSIZE(integer)2127.0.0.1:6379KEYS *1)name2)ls1在本例中可以看出当前数据库中有两个key。2.5、INFOINFO用于查看Redis服务器的各种信息和统计数值。127.0.0.1:6379INFO# 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# 使用内存单位Byteused_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文件已花费的时间单位srdb_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操作使用的时间单位msmigrate_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:keys1,expires0,avg_ttl0# 数据库0中的key的个数2.6、MONITORMONITOR用于实时输出Redis服务器接收到的命令可供调试使用。首先使用redis-cli命令打开第一个客户端执行以下命令。127.0.0.1:6379MONITOR OK然后使用redis-cli命令打开第二个客户端执行以下命令存储数据。127.0.0.1:6379SET name wangwu OK127.0.0.1:6379GET namewangwu最后查看第一个客户端会看到如下信息。127.0.0.1:6379MONITOR OK1525610398.977423[0127.0.0.1:53469]setnamewangwu1525610400.361838[0127.0.0.1:53469]getname从结果可看出此Redis服务器目前接收了命令set和get。2.7、CONFIG GETCONFIG GET用于获取Redis服务器的配置信息。127.0.0.1:6379CONFIG GETdir1)dir2)/usr/local/redis/bin在本例中我们使用CONFIG GET获取了dir参数配置的值。如果想获取全部参数配置的值执行CONFIG GET*就可以将全部参数配置的值都显示出来。2.8、FLUSHDBFLUSHDB用于删除当前选择的数据库中的所有key。127.0.0.1:6379SELECT0OK127.0.0.1:6379KEYS *1)name2)age127.0.0.1:6379FLUSHDB OK在本例中我们将数据库0中的key都删除了。2.9、FLUSHALLFLUSHALL用于删除所有数据库中的key。127.0.0.1:6379FLUSHALL OK127.0.0.1:6379KEYS *#查询数据库0的所有key(empty list orset)127.0.0.1:6379SELECT1#使用数据库1OK127.0.0.1:6379[1]KEYS *#查询数据库1的所有key(empty list orset)在本例中我们使用FLUSHALL命令删除了所有数据库中的key查看数据库0中的key发现都被删除了然后切换到数据库1发现数据库1中的key也被删除了。