Redis测试用命令都在这,帮你快速搞定各种场景问题
- 问答
- 2026-01-19 11:08:39
- 1
想玩转Redis测试,你得先有个Redis环境,最简单的方法就是用Docker拉一个起来,这是很多人在知乎上推荐的方式,因为干净又方便,命令大概是这样的:docker run -d --name my-redis -p 6379:6379 redis,这条命令会在后台运行一个名为my-redis的容器,并把它的6379端口映射到你本机的6379端口,环境准备好了,我们就可以开始各种场景的测试了。
基础操作测试:就像在玩一个高级字典
Redis最基本的就是这五种数据类型:字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)和哈希(Hash),测试它们,就用最经典的“增删改查”套路。
-
字符串(String): 这是最简单的类型,可以存数字、文本甚至图片序列化后的东西,测试命令比如:
SET mykey "Hello Redis"- 这就像往一个叫“mykey”的盒子里放进“Hello Redis”这个内容。GET mykey- 这是把“mykey”盒子里的东西再拿出来看看,应该会返回"Hello Redis"。INCR counter- 如果一个键存的是数字,这个命令能让数字自己加1,非常适合用来做文章阅读量、用户点赞数的测试。DEL mykey- 测试删除功能,把“mykey”这个盒子整个扔掉。
-
列表(List): 像一个排队队伍,数据一个接一个,可以从左边或右边放进放出。
LPUSH mylist "world"- 从队伍左边插进一个“world”。RPUSH mylist "hello"- 从队伍右边插进一个“hello”。LRANGE mylist 0 -1- 查看整个队伍,从第0个到最后一个,这时候你可能会看到队伍是 "world" "hello"。LPOP mylist- 从队伍左边弹出一个成员,就像队伍第一个人办完事离开了。
-
集合(Set): 像一个不允许有重复成员的俱乐部,而且成员进来顺序是乱的。
SADD myset "apple" "banana" "apple"- 尝试往俱乐部里加“apple”、“banana”和又一个“apple”,因为不能重复,最后俱乐部里只有“apple”和“banana”两个成员。SMEMBERS myset- 查看俱乐部所有成员,但顺序是不确定的。SISMEMBER myset "apple"- 检查“apple”是不是俱乐部的成员,返回1表示是,0表示不是。
-
哈希(Hash): 像一个档案袋,里面装着一个对象的多条信息,比如一个用户的姓名、年龄、城市。
HSET user:1000 name "张三" age 30 city "北京"- 给编号1000的用户建立一个档案袋,里面记录了名字、年龄和城市。HGET user:1000 name- 单独查看1000号用户的姓名。HGETALL user:1000- 把1000号用户的整个档案袋内容都拿出来看。
-
有序集合(Sorted Set): 和集合类似,但每个成员都有一个分数(score),队伍按分数从小到大排队,常用于排行榜。
ZADD leaderboard 100 "player1" 200 "player2"- 给玩家设置分数,加入到排行榜。ZRANGE leaderboard 0 -1 WITHSCORES- 按分数从低到高查看排行榜及其分数。ZREVRANGE leaderboard 0 -1 WITHSCORES- 按分数从高到低查看,这才是常见的排行榜样子。
生命周期测试:给数据设定一个“保质期”

Redis一个很有用的功能是可以给数据设置过期时间,时间一到,数据自动删除,这在验证码缓存、会话保持等场景非常有用,测试这个功能主要用两个命令:
SETEX mycode 60 "123456"- 这个命令是合二为一,设置一个键mycode,值为123456,并且过期时间是60秒,60秒后,这个键会自动消失。- 另一种方式是先
SET mycode "123456",然后EXPIRE mycode 60。 - 你可以用
TTL mycode来查看这个键还剩下多少秒“寿命”,如果返回-2表示键已经不存在了,返回-1表示键没有设置过期时间。
性能与压力测试:看看Redis到底有多能扛
当你想知道你的Redis服务器性能如何,能承受多大的访问压力时,就需要进行性能测试,Redis官方自带了一个非常强大的压力测试工具,叫redis-benchmark,这个工具可以直接在命令行里使用,它会模拟很多个客户端同时向Redis发送命令,然后统计处理速度。
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000这条命令的意思是:连接本地的6379端口Redis,模拟100个客户端同时连接,一共发送10万次请求,它会测试各种命令的每秒处理次数(QPS),让你对Redis的性能有个直观的了解,很多技术博客在介绍性能调优时都会提到这个工具。
持久化测试:模拟断电,数据会丢吗?
Redis的数据是放在内存里的,如果服务器突然断电,内存里的数据就全没了,所以Redis提供了持久化机制,可以把内存数据保存到硬盘上,主要有两种方式:RDB(快照)和AOF(日志),测试持久化,就是模拟Redis正常关闭和非正常关闭后,重启时数据能否恢复。

- 你可以先写入一些数据,然后执行
SAVE命令(会阻塞所有请求,生产环境慎用)或BGSAVE命令(后台执行),手动创建一个RDB快照。 - 然后你重启Redis服务,再检查之前的数据是否还在。
- 对于AOF,你可以在配置文件里开启它,然后进行一些写操作,观察AOF文件内容的变化,接着模拟宕机,再重启Redis,看通过AOF日志是否能完整恢复数据。
事务与管道测试:批量操作的效率
事务(Multi/Exec)能保证一批命令原子性执行,中间不会被其他命令打断,管道(Pipeline)则能将多个命令打包一次发送,大大减少网络往返时间,提升效率,测试时:
- 对于事务,你可以用
MULTI开始,然后输入一系列命令,最后用EXEC执行,可以故意在事务中模拟一个错误,看看其他命令是否还会执行。 - 对于管道,你可以写一个简单脚本,比如用Python的redis库,一次性发送一万次
SET命令,对比一下使用管道和不使用管道所花费的时间差异,你会明显感受到管道带来的性能提升。
高级特性与故障模拟测试
这部分稍微深入一点,比如测试主从复制:搭建一个主节点(Master)和几个从节点(Slave),然后在主节点上写数据,看看从节点是否能几乎实时地同步过去,还可以模拟主节点宕机,然后手动将一个从节点提升为新的主节点(故障转移),测试系统的可用性。
Redis的Pub/Sub(发布/订阅)功能也值得测试,就像是一个简单的消息系统,你可以用一个客户端SUBSCRIBE news订阅“news”频道,然后用另一个客户端PUBLISH news "hello everyone"发布消息,看第一个客户端是否能立刻收到。
别忘了清理现场,测试完成后,如果想清空当前数据库的所有数据,可以用FLUSHDB命令;如果想清空整个Redis服务器(所有数据库)的数据,可以用FLUSHALL命令,这两个命令非常危险,在生产环境下绝对不能用,但在测试环境就非常方便。
就是一些常见的Redis测试场景和对应的命令,实际测试时,你可以根据自己的业务需求,把这些基础命令像搭积木一样组合起来,创造出更复杂的测试用例,从而确保你的Redis应用稳定可靠。
本文由凤伟才于2026-01-19发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/83629.html
