7

Redis 命令工具

 11 months ago
source link: https://www.cnblogs.com/sl08/p/17725930.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

--- Redis 命令工具 ---

md-fences md-end-block ty-contain-cm modeLoaded highlighter- pgsql
 redis-server Redis 服务器启动命令
redis-cli shutdown 停止服务
redis-benchmark:性能测试工具,用于检测 Redis 在本机的运行效率
redis-check-aof:修复有问题的 AOF 持久化文件
redis-check-rdb:修复有问题的 RDB 持久化文件
redis-cli:Redis 客户端命令行工具
redis-sentinel:Redis 哨兵集群使用

3226717-20230924141001136-1532691998.png

3226717-20230924141000776-388370482.png

redis-cli 命令行工具

语法:redis-cli -h host -p port [-a password]

md-fences md-end-block ty-contain-cm modeLoaded highlighter- stylus
-h :指定远程主机
-p :指定 Redis 服务的端口号
-a :指定密码,未设置数据库密码可以省略-a 选项
若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的 Redis 数据库
​
redis-cli -h 192.168.80.10 -p 6379 -a 'abc123'  

3226717-20230924141000442-854812061.png

redis-benchmark 测试工具

redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。 基本的测试语法:redis-benchmark [选项] [选项值]。

md-fences md-end-block ty-contain-cm modeLoaded highlighter- diff
-h :指定服务器主机名。
-p :指定服务器端口。
-s :指定服务器 socket
-c :指定并发连接数。 
-n :指定请求数。
-d :以字节的形式指定 SET/GET 值的数据大小。
-k :1=keep alive 0=reconnect 。
-r :SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P :通过管道传输<numreq>请求。
-q :强制退出 redis。仅显示 query/sec 值。
--csv :以 CSV 格式输出。
-l :生成循环,永久执行测试。
-t :仅运行以逗号分隔的测试命令列表。
-I :Idle 模式。仅打开 N 个 idle 连接并等待。

#向 IP 地址为 192.168.80.10、端口为 6379 的 Redis 服务器发送 100 个并发连接与 100000 个请求测试性能

md-fences md-end-block ty-contain-cm modeLoaded highlighter- apache
redis-benchmark -h 192.168.80.10 -p 6379 -c 100 -n 100000 -a [密码]

3226717-20230924140959979-273698377.png

#测试存取大小为 100 字节的数据包的性能

md-fences md-end-block ty-contain-cm modeLoaded highlighter- apache
redis-benchmark -h 192.168.80.10 -p 6379 -q -d 100 

3226717-20230924140959597-695090786.png

#测试本机上 Redis 服务在进行 set 与 lpush 操作时的性能 redis-benchmark -t set,lpush -n 100000 -q

3226717-20230924140959183-1546248791.png

---------------------- Redis 数据库常用命令 ---------------------------------------- set:存放数据,命令格式为 set key value get:获取数据,命令格式为 get key

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> set teacher zhangsan
OK
127.0.0.1:6379> get teacher
"zhangsan"

3226717-20230924140958866-1703256650.png

keys 命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用。

md-fences md-end-block ty-contain-cm modeLoaded highlighter- apache
#创建键与值
127.0.0.1:6379> set k1 1
127.0.0.1:6379> set k2 
127.0.0.1:6379> set k3 3
127.0.0.1:6379> set v1 4
127.0.0.1:6379> set v5 5
127.0.0.1:6379> set v22 5

3226717-20230924140958537-6154541.png

127.0.0.1:6379> KEYS * #查看当前数据库中所有键

3226717-20230924140958206-1791825702.png

127.0.0.1:6379> KEYS v* #查看当前数据库中以 v 开头的数据

3226717-20230924140957878-612384507.png

127.0.0.1:6379> KEYS v? #查看当前数据库中以 v 开头后面包含任意一位的数据

3226717-20230924140957566-1235537173.png

127.0.0.1:6379> KEYS v?? #查看当前数据库中以 v 开头 v 开头后面包含任意两位的数据

3226717-20230924140957257-490156453.png

exists 命令可以判断键值是否存在。

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> exists teacher      #判断 teacher 键是否存在
(integer) 1                         # 1 表示 teacher 键是存在
127.0.0.1:6379> exists tea
(integer) 0                         # 0 表示 tea 键不存在

3226717-20230924140956926-980969351.png

del 命令可以删除当前数据库的指定 key。

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> keys *
127.0.0.1:6379> del v5
127.0.0.1:6379> get v5

3226717-20230924140956611-47705585.png

type 命令可以获取 key 对应的 value 值类型。

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> type k1
string

3226717-20230924140956238-1866849185.png

#expire 命令可以为给定的 key 设置过期时间

md-fences md-end-block ty-contain-cm modeLoaded highlighter- apache
127.0.0.1:6379> expire k1 10        #设置 k1 键的过期时间为 10 秒

3226717-20230924140955920-2145956638.png

#ttl 命令可以查看 key 还有多少秒过期,-1表示永不过期,-2表示已过期

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> ttl k1

3226717-20230924140955586-1145908411.png

rename 命令是对已有 key 进行重命名。(覆盖)

命令格式:rename 源key 目标key 使用rename命令进行重命名时,无论目标key是否存在都进行重命名,且源key的值会覆盖目标key的值。在实际使用过程中,建议先用 exists 命令查看目标 key 是否存在,然后再决定是否执行 rename 命令,以避免覆盖重要数据。

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> keys v*
1) "v1"
2) "v22"
127.0.0.1:6379> rename v22 v2
OK
127.0.0.1:6379> keys v*
1) "v1"
2) "v2"
127.0.0.1:6379> get v1
"4"
127.0.0.1:6379> get v2
"5"
127.0.0.1:6379> rename v1 v2
OK
127.0.0.1:6379> get v1
(nil)
127.0.0.1:6379> get v2
"4"

3226717-20230924140955242-162173945.png

renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖)

命令格式:renamenx 源key 目标key

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> keys *
127.0.0.1:6379> get teacher
"zhangsan"
127.0.0.1:6379> get v2
"4"
127.0.0.1:6379> renamenx v2 teacher
(integer) 0
127.0.0.1:6379> keys *
127.0.0.1:6379> get teacher
"zhangsan"
127.0.0.1:6379> get v2
"4"

3226717-20230924140954864-1246171742.png

dbsize 命令的作用是查看当前数据库中 key 的数目。

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> dbsize

3226717-20230924140954540-400275340.png

#使用config set requirepass yourpassword命令设置密码

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> config set requirepass 123456

3226717-20230924140954121-1494297003.png

#使用config get requirepass命令查看密码(一旦设置密码,必须先验证通过密码,否则所有操作不可用)

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> auth 123456
127.0.0.1:6379> config get requirepass

3226717-20230924140953803-117169088.png

---- Redis 多数据库常用命令 ----

Redis 支持多数据库,Redis 默认情况下包含 16 个数据库,数据库名称是用数字 0-15 来依次命名的。 多数据库相互独立,互不干扰。

#多数据库间切换

命令格式:select 序号 使用 redis-cli 连接 Redis 数据库后,默认使用的是序号为 0 的数据库。

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> select 10           #切换至序号为 10 的数据库
​
127.0.0.1:6379[10]> select 15       #切换至序号为 15 的数据库
​
127.0.0.1:6379[15]> select 0            #切换至序号为 0 的数据库

3226717-20230924140953451-376306948.png

#多数据库间移动数据

格式:move 键值 序号

md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> set k1 100
OK
127.0.0.1:6379> get k1
"100"

3226717-20230924140953123-712036561.png
md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get k1
(nil)
127.0.0.1:6379[1]> select 0         #切换至目标数据库 0
OK
127.0.0.1:6379> get k1              #查看目标数据是否存在
"100"

3226717-20230924140952730-364924794.png
md-fences md-end-block ty-contain-cm modeLoaded highlighter- accesslog
127.0.0.1:6379> move k1 1           #将数据库 0 中 k1 移动到数据库 1 中
(integer) 1
127.0.0.1:6379> select 1                #切换至目标数据库 1
OK
127.0.0.1:6379[1]> get k1           #查看被移动数据
"100"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> get k1              #在数据库 0 中无法查看到 k1 的值
(nil)

3226717-20230924140952409-1965549496.png

#清除数据库内数据 FLUSHDB :清空当前数据库数据 FLUSHALL :清空所有数据库的数据,慎用!

3226717-20230924140951976-448192560.png

3226717-20230924140951306-2063744630.png

__EOF__


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK