Redis——Redis常用命令

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也被删除了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/230279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python教程81:函数的位置参数、默认参数、动态参数、关键字参数(入门必看)

1.形式参数(Formal Parameters)和实际参数(Actual Parameters)是函数或方法定义和调用过程中的两个重要概念。举个例子,在下面的greet函数中,当我们调用greet(“李白”)时,"李白"就是…

electron这样使用更安全

背景: electron大家平时为了方便使用,或是一些网上demo的引导,会让渲染进程的业务界面支持直接使用nodejs,这种开发方式有一定的安全隐患,如果业务界面因为xss之类的漏洞被注入其他代码,危害非常大&#x…

Spring之容器:IOC(3)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

华为云CodeArts Repo常见问答汇总

1.【Repo】codearts Repo最大支持上传文件大小 答&#xff1a;参考链接 https://support.huaweicloud.com/productdesc-codehub/codehub_pdtd_0005.html • 单文件上传大小限制&#xff08;评论中上传附件&#xff09;<50MB。 • 单文件上传大小限制&#xff08;代码…

某联合产权交易所持续购买监控易产品的维保服务,提升IT运维保障能力

在信息化时代&#xff0c;企业信息化的程度已经成为影响其核心竞争力的重要因素。某联合产权交易所&#xff08;以下简称“交易所”&#xff09;作为行业领导者&#xff0c;一直以来都积极推进信息化建设&#xff0c;致力于提升运维管理水平&#xff0c;以适应日益激烈的市场竞…

Rust 嵌入式开发

Rust 进行嵌入式开发: https://xxchang.github.io/book/intro/index.html # 列出所有目标平台 rustup target list# 安装目标平台工具链 rustup target add thumbv7m-none-eabi# 创建工程 cargo new demo && cd demo cargo add cortex-m-rt cargo add panic-halt carg…

二十九、获取文件属性及相关信息

二十九、获取文件属性及相关信息QFileInfo QFileInfo 提供有关文件在文件系统中的名称 位置 &#xff08;路径&#xff09;、访问权限及它是目录还是符号链接、等信息。文件的大小、最后修改/读取时间也是可用的。QFileInfo 也可以被用于获取信息有关 Qt resource . QFileInf…

科技的成就(五十四)

511、线路板按层数来分的话分为单面板&#xff0c;双面板&#xff0c;和多层线路板三个大的分类。线路板按特性来分的话分为软板(FPC)&#xff0c;硬板(PCB)&#xff0c;软硬结合板(FPCB)。是当代电子元件业中最活跃的产业&#xff0c;其行业增长速度一般都高于电子元件产业3个…

算法模板之双链表图文详解

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;算法模板、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️使用数组模拟双链表讲解1.1 &#x1f514;为什么我们要使用数组去模拟双链表…

使用java调用python批处理将pdf转为图片

你可以使用Java中的ProcessBuilder来调用Python脚本&#xff0c;并将PDF转换为图片。以下是一个简单的Java代码示例&#xff0c;假设你的Python脚本名为pdf2img.py&#xff1a; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader…

Powershell summaries with types of scales of summaries

tiny,small,medium, large and huge scale of Powershell summaries I) many kinds of Tiny summaries of Powershell1.1) Powershell能干嘛&#xff1f; I) many kinds of Tiny summaries of Powershell 1.1) Powershell能干嘛&#xff1f; 此外&#xff0c;关于PowerShell脚…

Java数组(2)

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

Kotlin 笔记 -- Kotlin 语言特性的理解(二)

都是编译成字节码&#xff0c;为什么 Kotlin 能支持 Java 中没有的特性&#xff1f; kotlin 有哪些 Java 中没有的特性&#xff1a; 类型推断、可变性、可空性自动拆装箱、泛型数组高阶函数、DSL顶层函数、扩展函数、内联函数伴生对象、数据类、密封类、单例类接口代理、inter…

图像与视频压缩算法

图像压缩是通过减少图像数据量来降低图像文件的大小&#xff0c;从而减少存储空间和传输带宽。有多种图像压缩算法&#xff0c;它们可以分为两大类&#xff1a;有损压缩和无损压缩。 无损压缩算法&#xff1a; Run-Length Encoding (RLE): 这是一种简单的无损压缩方法&#x…

西蒙子S7协议介绍

西门子的S7 协议&#xff0c;没有仍何关于S7协议的官方文档&#xff0c;是一个不透明的协议。关于S7的协议介绍&#xff0c;大都是非官方的一些七零八落的文档。 1. S7的通信模型 西蒙子S7 通讯遵从着基于TCP 的 Master&#xff08;client&#xff09; & Slave&#xff0…

读取小数部分

1.题目描述 2.题目分析 //假设字符串为 char arr[] "123.4500"; 1. 找到小数点位置和末尾位置 代码如下&#xff1a; char* start strchr(arr, .);//找到小数点位置char* end start strlen(start) - 1;//找到末尾位置 如果有不知道strchr()用法的同学&#xf…

Pytorch神经网络的模型架构(nn.Module和nn.Sequential的用法)

一、层和块 在构造自定义块之前&#xff0c;我们先回顾一下多层感知机的代码。下面的代码生成一个网络&#xff0c;其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层&#xff0c;然后是一个具有10个隐藏单元且不带激活函数的全连接输出层。 import torch from torch im…

Linux 基本语句_16_Udp网络聊天室

代码&#xff1a; 服务端代码&#xff1a; #include <stdio.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdlib.h> #include <unistd.h> #include <string…

中小型企业网络综合实战案例分享

实验背景 某公司总部在厦门&#xff0c;北京、上海都有分部&#xff0c;网络结构如图所示&#xff1a; 一、网络连接描述&#xff1a; 厦门总部&#xff1a;内部网络使用SW1、SW2、SW3三台交换机&#xff0c;SW1为作为核心交换机&#xff0c;SW2、SW3作为接入层交换机&#x…

go语言实现文件夹上传前后端代码案例

go语言实现文件夹上传前后端代码案例 前端用于上传的测试界面 如果上传的文件夹有子文件要遍历子文件夹创建出子文件夹再进行拷贝需要获取文件名和对应的路径&#xff0c;将文件的相对路径和文件对象添加到FormData中这几行代码很关键 for (let i 0; i < files.length; i…