Redis第一阶段:Redis基础与测试环境搭建(Mac版)
1. Redis概述
Redis是什么?
Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,支持多种数据结构。它提供了高性能、高可用性和丰富的数据结构,常被用作:
- 缓存:缓解数据库压力,提升应用响应速度
- 消息队列:通过List、Pub/Sub等实现异步消息处理
- 会话存储:存储用户会话信息,支持分布式会话
- 实时排行榜:使用Sorted Set实现实时排序
- 地理空间数据:存储和查询地理位置信息
测试工程师为何要学Redis?
- 性能测试:模拟缓存层,验证系统在高并发下的缓存命中率
- 数据验证:检查Redis中的数据一致性,验证数据持久化机制
- 故障模拟:模拟Redis故障场景,测试系统的容错能力
- 中间件测试:验证Redis集群、主从复制等功能的正确性
- 自动化测试:使用Redis存储测试数据或测试状态
2. 环境搭建与配置
Mac单机部署
方法一:使用Homebrew安装(推荐)
bash
# 1. 安装Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. 安装Redis
brew install redis
# 3. 启动Redis服务
brew services start redis # 后台启动
# 或
redis-server /usr/local/etc/redis.conf # 前台启动
# 4. 验证安装
redis-cli ping # 应返回 PONG
方法二:使用Docker安装
bash
# 1. 安装Docker Desktop for Mac
# 访问 https://www.docker.com/products/docker-desktop
# 2. 拉取Redis镜像
docker pull redis:latest
# 3. 运行Redis容器
docker run --name my-redis -p 6379:6379 -d redis
# 4. 进入Redis容器
docker exec -it my-redis redis-cli
方法三:源码编译安装
bash
# 1. 下载Redis源码
curl -O https://download.redis.io/redis-stable.tar.gz
# 2. 解压并编译
tar -xzvf redis-stable.tar.gz
cd redis-stable
make
# 3. 测试编译结果
make test
# 4. 安装到系统目录
sudo make install
配置文件解读(redis.conf)
持久化相关参数
bash
# RDB持久化配置
save 900 1 # 900秒内至少有1个key被修改则保存
save 300 10 # 300秒内至少有10个key被修改则保存
save 60 10000 # 60秒内至少有10000个key被修改则保存
dbfilename dump.rdb # RDB文件名
dir ./ # 持久化文件存储目录
# AOF持久化配置
appendonly yes # 开启AOF
appendfilename "appendonly.aof" # AOF文件名
appendfsync everysec # 每秒同步一次
内存相关参数
bash
maxmemory 100mb # 最大内存限制
maxmemory-policy allkeys-lru # 内存淘汰策略
网络相关参数
bash
bind 127.0.0.1 # 绑定的IP地址
port 6379 # 监听端口
protected-mode yes # 保护模式
客户端工具使用
1. redis-cli(命令行工具)
bash
# 基本连接
redis-cli # 连接本地Redis
redis-cli -h host -p port # 连接远程Redis
redis-cli -a password # 使用密码连接
# 常用参数
redis-cli --stat # 显示实时统计信息
redis-cli --bigkeys # 查找大key
redis-cli --scan # 扫描所有key
2. RedisInsight(官方GUI工具)
bash
# 安装
brew install --cask redisinsight
# 或从官网下载:https://redis.com/redis-enterprise/redis-insight/
3. Another Redis Desktop Manager(第三方GUI)
bash
# 安装
brew install --cask another-redis-desktop-manager
3. 基础命令与数据操作
五大核心数据结构
1. String(字符串)
bash
# 增/改
SET user:1000 "John Doe"
SETEX session:abc 3600 "user_data" # 设置过期时间
MSET key1 "value1" key2 "value2" # 批量设置
# 查
GET user:1000
MGET key1 key2 # 批量获取
STRLEN user:1000 # 获取字符串长度
# 删
DEL user:1000
2. Hash(哈希)
bash
# 增/改
HSET user:1001 name "Alice" age 30 email "alice@test.com"
HMSET user:1002 name "Bob" age 25 email "bob@test.com"
# 查
HGET user:1001 name
HGETALL user:1001 # 获取所有字段
HKEYS user:1001 # 获取所有字段名
HVALS user:1001 # 获取所有值
# 删
HDEL user:1001 email
3. List(列表)
bash
# 增
LPUSH mylist "item1" "item2" # 左侧插入
RPUSH mylist "item3" "item4" # 右侧插入
LINSERT mylist BEFORE "item2" "new_item" # 指定位置插入
# 查
LRANGE mylist 0 -1 # 获取所有元素
LINDEX mylist 1 # 获取指定位置元素
LLEN mylist # 获取列表长度
# 删
LPOP mylist # 左侧弹出
RPOP mylist # 右侧弹出
LREM mylist 1 "item1" # 删除指定元素
4. Set(集合)
bash
# 增
SADD tags "java" "python" "redis"
SADD tags2 "redis" "go" "docker"
# 查
SMEMBERS tags # 获取所有成员
SISMEMBER tags "java" # 检查成员是否存在
SCARD tags # 获取成员数量
# 集合运算
SINTER tags tags2 # 交集
SUNION tags tags2 # 并集
SDIFF tags tags2 # 差集
# 删
SREM tags "java" # 删除成员
5. Sorted Set(有序集合)
bash
# 增/改
ZADD leaderboard 100 "player1" 200 "player2" 150 "player3"
ZINCRBY leaderboard 50 "player1" # 增加分数
# 查
ZRANGE leaderboard 0 -1 WITHSCORES # 按分数升序获取
ZREVRANGE leaderboard 0 -1 WITHSCORES # 按分数降序获取
ZSCORE leaderboard "player1" # 获取成员分数
ZRANK leaderboard "player1" # 获取成员排名(升序)
ZREVRANK leaderboard "player1" # 获取成员排名(降序)
# 删
ZREM leaderboard "player2"
ZREMRANGEBYRANK leaderboard 0 1 # 删除排名范围
通用命令
bash
# Key操作
KEYS user:* # 模式匹配(生产环境慎用)
SCAN 0 MATCH user:* COUNT 10 # 安全扫描
EXISTS key1 # 检查key是否存在
EXPIRE key1 60 # 设置过期时间(秒)
TTL key1 # 查看剩余生存时间
TYPE key1 # 查看数据类型
# 批量操作
MGET key1 key2 key3
DEL key1 key2 key3
# 事务
MULTI # 开启事务
SET key1 "value1"
SET key2 "value2"
EXEC # 执行事务
# 管道操作
echo -e "SET key1 value1\nGET key1" | redis-cli --pipe
数据备份与恢复
RDB文件操作
bash
# 手动触发RDB备份
redis-cli SAVE # 阻塞式保存
redis-cli BGSAVE # 后台保存
# 查看RDB文件信息
redis-check-rdb dump.rdb
# 恢复数据(停止Redis服务后)
cp dump.rdb /usr/local/var/db/redis/ # 复制备份文件到Redis数据目录
redis-server /usr/local/etc/redis.conf # 启动Redis
AOF文件操作
bash
# AOF重写(压缩AOF文件)
redis-cli BGREWRITEAOF
# 检查AOF文件
redis-check-aof appendonly.aof
# 修复AOF文件
redis-check-aof --fix appendonly.aof
# 将AOF转换为RDB
redis-cli --rdb dump.rdb
数据迁移
bash
# 导出数据
redis-cli --rdb dump.rdb
# 导入数据(先停止目标Redis服务,复制文件后启动)
测试环境验证脚本
bash
#!/bin/bash
# test_redis_basic.sh
echo "=== Redis基础功能测试 ==="
# 测试连接
echo "1. 测试连接..."
redis-cli ping
# 测试String
echo -e "\n2. 测试String类型..."
redis-cli SET test:string "Hello Redis"
redis-cli GET test:string
# 测试Hash
echo -e "\n3. 测试Hash类型..."
redis-cli HSET test:hash field1 "value1" field2 "value2"
redis-cli HGETALL test:hash
# 测试过期时间
echo -e "\n4. 测试TTL..."
redis-cli SETEX test:ttl 10 "expire in 10 seconds"
redis-cli TTL test:ttl
# 清理测试数据
echo -e "\n5. 清理测试数据..."
redis-cli DEL test:string test:hash test:ttl
echo -e "\n=== 测试完成 ==="
环境验证清单
- Redis服务已启动并运行正常
- redis-cli可以正常连接
- GUI工具可以成功连接
- 五大数据结构的基本操作正常
- 持久化配置已正确设置
- 备份恢复流程已验证
后续学习建议
- 学习Redis事务和管道
- 了解Redis持久化机制(RDB/AOF)的优缺点
- 掌握Redis主从复制配置
- 学习Redis哨兵和集群部署
- 实践Redis在性能测试中的应用场景
通过本阶段的学习,测试工程师可以搭建完整的Redis测试环境,掌握基本的Redis操作,为后续的性能测试、数据验证和故障模拟打下坚实基础。