【Redis】Redis基础与测试环境搭建(Mac版)入门

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=== 测试完成 ==="

环境验证清单

  1. Redis服务已启动并运行正常
  2. redis-cli可以正常连接
  3. GUI工具可以成功连接
  4. 五大数据结构的基本操作正常
  5. 持久化配置已正确设置
  6. 备份恢复流程已验证

后续学习建议

  • 学习Redis事务和管道
  • 了解Redis持久化机制(RDB/AOF)的优缺点
  • 掌握Redis主从复制配置
  • 学习Redis哨兵和集群部署
  • 实践Redis在性能测试中的应用场景

通过本阶段的学习,测试工程师可以搭建完整的Redis测试环境,掌握基本的Redis操作,为后续的性能测试、数据验证和故障模拟打下坚实基础。

相关推荐
世界尽头与你1 分钟前
MySQL InnoDB的 MVCC 实现机制
数据库·mysql
你刷碗16 分钟前
基于S32K144 CESc生成随机数
android·java·数据库
松涛和鸣17 分钟前
70、IMX6ULL LED驱动实战
linux·数据库·驱动开发·postgresql·sqlserver
世界尽头与你36 分钟前
详解 MySQL 数据库索引实现机制 - B 树和 B + 树
数据库·mysql·索引
德彪稳坐倒骑驴42 分钟前
MySQL Oracle面试题
数据库·mysql·oracle
数据知道1 小时前
PostgreSQL 核心原理:什么场景下开启 JIT 能提升性能?(JIT 编译)
数据库·postgresql
吕司1 小时前
MySQL库的操作
数据库·mysql·oracle
LaughingZhu1 小时前
Product Hunt 每日热榜 | 2026-02-05
大数据·数据库·人工智能·经验分享·搜索引擎·产品运营
indexsunny1 小时前
互联网大厂Java面试实战:微服务与Spring生态技术解析
java·spring boot·redis·kafka·mybatis·hibernate·microservices
逃逸线LOF1 小时前
mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止
数据库