Redis——Redis常用命令

2023-12-18

Redis提供了丰富的命令,可以对数据库和各种数据类型进行操作,这些命令可以在Windows和Linux中使用。

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 one 1 two 2 three 3 four 4 five 5 
OK 
 
# 查看当前数据库下的所有key 
127.0.0.1:6379> KEYS * 
1) "one" 
2) "two" 
3) "three" 
4) "four" 
5) "five" 
 
# 查找第一个字符为f的key 
127.0.0.1:6379> KEYS f* 
1) "four" 
2) "five" 
 
# 查找第一个字符为t的key 
127.0.0.1:6379> KEYS t??
1) "two" 
 
# 查找第二个字符为o的key 
127.0.0.1:6379> KEYS ?o*   
1) "four" 
 
# 查找以f开头的,包含字母字符串的key 
127.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]

SCAN命令的参数包括:

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

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

127.0.0.1:6379> SET key:1 1 
OK 
127.0.0.1:6379> SET key:2 2 
OK 

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

127.0.0.1:6379> SCAN 0      # 使用 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> SCAN 20  # 使用第一次迭代时返回的游标 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 
OK 
127.0.0.1:6379> EXISTS name 
(integer) 1 
127.0.0.1:6379> EXISTS address 
(integer) 0

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

1.4、DEL

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

实例如下:

127.0.0.1:6379> DEL name 
(integer) 1 
127.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" 
OK 
127.0.0.1:6379> EXPIRE cache_page 60
(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" 
OK 
127.0.0.1:6379> EXPIRE cache_page2 60 
(integer) 1 
127.0.0.1:6379> TTL cache_page2 
(integer) 56 
127.0.0.1:6379> TTL cache_page2 
(integer) 35 
127.0.0.1:6379> TTL cache_page2 
(integer) 25 
127.0.0.1:6379> TTL cache_page2 
(integer) 8 
127.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个数据库)。

实例如下:

SELECT 1

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

1.8、MOVE

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

实例如下:

127.0.0.1:6379[1]> SELECT 0 
OK 
127.0.0.1:6379> SET age 20 
OK 
127.0.0.1:6379> GET age 
"20" 
127.0.0.1:6379> MOVE age 1 
(integer) 1 
127.0.0.1:6379> GET age 
(nil)
127.0.0.1:6379[1]> SELECT 1 
OK 
127.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 age 20 
OK 
127.0.0.1:6379> EXPIRE age 20 
(integer) 1 
127.0.0.1:6379> TTL age 
(integer) 18 
127.0.0.1:6379> PERSIST age 
(integer) 1 
127.0.0.1:6379> PERSIST age 
(integer) 0 
127.0.0.1:6379> TTL age 
(integer) -1

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

1.10、RANDOMKEY

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

实例如下:

127.0.0.1:6379> SET age1 20 
OK 
127.0.0.1:6379> SET age2 21 
OK 
127.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 age3 20 
OK 
127.0.0.1:6379> RENAME age3 age4 
OK 
127.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 
OK 
127.0.0.1:6379> TYPE name 
string 
127.0.0.1:6379> LPUSH ls1 a 
(integer) 1 
127.0.0.1:6379> TYPE ls1 
List 
127.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) 2 
127.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:Linux 3.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      # 当前客户端连接的最大输入buffer 
blocked_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操作,如果是则为1 
rdb_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_scheduled 
aof_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 
OK 
127.0.0.1:6379> GET name 
"wangwu"

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

127.0.0.1:6379> MONITOR 
OK 
1525610398.977423 [0 127.0.0.1:53469] "set" "name" "wangwu" 
1525610400.361838 [0 127.0.0.1:53469] "get" "name"

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

2.7、CONFIG GET

CONFIG GET用于获取Redis服务器的配置信息。
实例如下:

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

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

2.8、FLUSHDB

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

实例如下:

127.0.0.1:6379> SELECT 0 
OK 
127.0.0.1:6379> KEYS * 
1) "name" 
2) "age" 
127.0.0.1:6379> FLUSHDB  
OK

2.9、FLUSHALL

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

实例如下:

127.0.0.1:6379> FLUSHALL 
OK                     
127.0.0.1:6379> KEYS *     #查询数据库0的所有key 
(empty list or set)      
127.0.0.1:6379> SELECT 1   #使用数据库1 
OK                        
127.0.0.1:6379[1]> KEYS *  #查询数据库1的所有key 
(empty list or set)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis——Redis常用命令 的相关文章

随机推荐

  • 【Swiss-Model 同源建模】

    Swiss Model是一种同源建模方法 其基本原理是利用序列的同源性来推断蛋白质的三维结构 具体来说 就是通过找到与目标蛋白质序列同源且结构已知的模板蛋白质 来预测目标蛋白质的结构 同源建模的主要步骤包括 模板的确定 通过搜索数据库 找到
  • 计算机毕设ssm医疗健康项目小程序11on99【附源码】

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 vue mybatis Ma
  • 【Transformer】Transformer and BERT(1)

    文章目录 Transformer BERT 太 完整了 同济大佬唐宇迪博士终于把 Transformer 入门到精通全套课程分享出来了 最新前沿方向 学习笔记 Transformer 无法并行 层数比较少 词向量生成之后 不会变 没有结合语
  • ASSY 12149 PLC自动化控制模块

    ASSY 12149 PLC自动化控制模块 ASSY 12149 PLC自动化控制模块 产品详情 ASSY 12149 PLC 可编程逻辑控制器 自动化控制模块在工业自动化领域中有广泛的应用 这些模块设计用于监测 控制和自动化各种工业过程和
  • Matplotlib快速入门,Python通用的绘图工具库上手

    Matplotlib是一个用于Python编程语言的综合性绘图库 它可以生成各种类型的图表 包括折线图 条形图 散点图 直方图 饼图等 Matplotlib支持多种数据格式 包括NumPy数组 Pandas DataFrame和CSV文件
  • Windows7系统prevhost.exe文件丢失问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个prevhos
  • 多线程编程与性能优化

    引言 在上一篇的入门篇中 我们对Android线程的基础概念和多线程编程模型有了初步了解 本篇将深入探讨多线程编程技术和性能优化策略 以提升应用的效率和响应性 高级多线程编程技术 使用线程池管理线程 线程池是一组预先创建的线程 用于执行任务
  • Windows7系统print.exe文件丢失问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个print e
  • 用Python完成下列问题。给你一个非空整数列表,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

    用Python完成下列问题 给你一个非空整数列表 除了某个元素只出现一次以外 其余每个元素均出现两次 找出那个只出现了一次的元素 示例 1 输入 nums 2 2 1 输出 1 示例 2 输入 nums 4 1 2 1 2 输出 4 示例
  • 进阶之Kotin协程原理和启动方式详细讲解(优雅使用协程)

    协程就是方法调用封装成类线程的API 方法调用当然比线程切换轻量 而封装成类线程的API后 它形似线程 可手动启动 有各种运行状态 能够协作工作 能够并发执行 前言 kotlin的协程在初学者看来是一个很神奇的东西 居然能做到用同步的代码块
  • Flutter ShapeBorder 使用总结

    Flutter ShapeBorder 使用总结 简介 ShapeBorder 用于设置形状和轮廓 比如圆形 矩形 圆角矩形等 常用于 Container 中 继承结构如下 ShapeBorder abstract BeveledRecta
  • 【Transformer】ViT and TNT(2)

    文章目录 VIT TNT 太 完整了 同济大佬唐宇迪博士终于把 Transformer 入门到精通全套课程分享出来了 最新前沿方向 学习笔记 VIT eg 图片分块 10x10x3 的 patch 通过 conv 拉成向量 就无缝对接了 位
  • (附源码)Springboot小区物业服务平台 毕业设计35514

    springboot小区物业服务平台 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化 电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用 信息时代的到来已成为不可阻挡的时尚潮流 人类发展的历史正进入一个新时代 在
  • Java——本地方法(JNA)详解

    目录 JNA 1 概述 2 入门案例 2 1 示例一 调用系统共享库 2 2 示例二 调用自定义共享库 2 指针参数Pointer
  • GE 369-HI-R-M-0-0-0-0 继电器模块

    GE 369 HI R M 0 0 0 0 继电器模块 GE 369 HI R M 0 0 0 0 继电器模块 产品详情 继电器模块用于在电气系统中控制电流 电压或其他参数 以保护设备 实现自动化控制或执行其他特定功能 以下是一些可能涉及的
  • SCHNNEIDER140CPS11100 电源模块

    SCHNNEIDER140CPS11100 电源模块 SCHNNEIDER140CPS11100 电源模块 产品详情 PLC 可编程逻辑控制器 系统 电源模块通常用于为PLC系统提供可靠的电力 确保PLC正常运行 工业自动化和控制系统 用于
  • 参与话题讨论

    随着人工智能和低代码的崛起 前端已死 的声音逐渐兴起 前端已死 尊嘟假嘟 快来发表你的看法吧 一 为什么会出现 前端已死 的言论 因为很多公司不重视前端 导致咱们后端程序员顶替开发前端 导致前端岗位受到挤压 但是有追求的老板还是会请前端的
  • 推荐一款图集打包工具,png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0

    png图片打包plist工具 手把手教你使用pngPackerGUI V2 0 此软件是在 pngpacker V1 1 软件基础之后 开发的界面化操作软件 方便不太懂命令行的小白快捷上手使用 1 下载并解压缩软件 得到如下目录 双击打开
  • MOOG D138-002-002 控制器模块

    MOOG D138 002 002 控制器模块 MOOG D138 002 002 控制器模块产品详情 MOOG D138 002 002控制器模块通常是指用于控制和管理其他设备或系统的电子模块 这些模块在工业自动化 机器人技术 运动控制等
  • Redis——Redis常用命令

    Redis提供了丰富的命令 可以对数据库和各种数据类型进行操作 这些命令可以在Windows和Linux中使用 1 键值相关命令 1 1 KEYS KEYS用于返回满足pattern的所有key pattern支持以下通配符 匹配任意字符