1108 字
约 3 分钟
9
设置会话过期时间为1小时
Redis 键概述
在 Redis 中,键(Key)是访问数据的唯一标识符。合理的键设计和管理对于 Redis 的性能和可维护性至关重要。本章将详细介绍 Redis 键的各种操作和最佳实践。
🏷️ 键的命名规范
良好的键命名规范有助于提高代码的可读性和维护性:
推荐的命名模式:
- user:1001:profile- 用户资料
- session:abc123- 会话信息
- cache:article:1001- 文章缓存
- counter:page:views- 页面访问计数
- lock:order:1001- 订单锁
💡 命名建议使用冒号 ":" 作为分隔符采用层次化结构使用有意义的名称保持一致的命名风格避免过长的键名
🔍 键的基本操作
Redis 提供了丰富的键操作命令:
| 命令 | 描述 | 示例 |
|---|---|---|
| EXISTS key | 检查键是否存在 | EXISTS user:1001 |
| TYPE key | 返回键的数据类型 | TYPE user:1001 |
| DEL key [key ...] | 删除一个或多个键 | DEL user:1001 user:1002 |
| RENAME key newkey | 重命名键 | RENAME oldname newname |
| KEYS pattern | 查找匹配模式的键 | KEYS user:* |
| SCAN cursor | 迭代数据库中的键 | SCAN 0 MATCH user:* |
⏰ 键的过期时间
Redis 支持为键设置过期时间,这对于缓存和临时数据非常有用:
| 命令 | 描述 | 示例 |
|---|---|---|
| EXPIRE key seconds | 设置键的过期时间(秒) | EXPIRE session:abc123 3600 |
| EXPIREAT key timestamp | 设置键在指定时间戳过期 | EXPIREAT key 1609459200 |
| PEXPIRE key milliseconds | 设置键的过期时间(毫秒) | PEXPIRE key 60000 |
| TTL key | 查看键的剩余生存时间(秒) | TTL session:abc123 |
| PTTL key | 查看键的剩余生存时间(毫秒) | PTTL session:abc123 |
| PERSIST key | 移除键的过期时间 | PERSIST session:abc123 |
过期时间示例:
# 设置会话过期时间为1小时
SET session:user123 "session_data"
EXPIRE session:user123 3600
# 检查剩余时间
TTL session:user123
# 设置缓存过期时间为30分钟
SET cache:article:1001 "article_content"
EXPIRE cache:article:1001 1800
🔍 键的查找和遍历
Redis 提供了多种方式来查找和遍历键:
KEYS 命令
KEYS 命令支持模式匹配:
- *- 匹配任意数量的字符
- ?- 匹配单个字符
- [abc]- 匹配方括号内的任意字符
- [a-z]- 匹配指定范围内的字符
KEYS 命令示例:
# 查找所有用户相关的键
KEYS user:*
# 查找所有缓存键
KEYS cache:*
# 查找特定模式的键
KEYS user:100?
KEYS session:[a-z]*
⚠️ 注意事项KEYS命令会阻塞服务器,在生产环境中应避免使用。推荐使用SCAN命令进行迭代。
SCAN 命令
SCAN 命令提供了非阻塞的键遍历方式:
SCAN 命令示例:
# 开始扫描
SCAN 0
# 带模式匹配的扫描
SCAN 0 MATCH user:*
# 限制返回数量
SCAN 0 MATCH user:* COUNT 10
# 继续扫描(使用返回的游标)
SCAN 17 MATCH user:*
📊 键空间统计
Redis 提供了一些命令来获取键空间的统计信息:
| 命令 | 描述 | 示例 |
|---|---|---|
| DBSIZE | 返回当前数据库的键数量 | DBSIZE |
| INFO keyspace | 显示键空间统计信息 | INFO keyspace |
| RANDOMKEY | 随机返回一个键 | RANDOMKEY |
实际应用示例
用户会话管理:
# 创建用户会话
SET session:abc123 "{\"user_id\": 1001, \"login_time\": 1609459200}"
EXPIRE session:abc123 7200 # 2小时过期
# 检查会话是否存在
EXISTS session:abc123
# 延长会话时间
EXPIRE session:abc123 7200
# 删除会话
DEL session:abc123
缓存管理:
# 设置文章缓存
SET cache:article:1001 "article content"
EXPIRE cache:article:1001 3600 # 1小时过期
# 批量删除缓存
KEYS cache:article:*
DEL cache:article:1001 cache:article:1002
# 清理过期缓存(使用SCAN避免阻塞)
SCAN 0 MATCH cache:* COUNT 100
💡 最佳实践使用有意义的键名,便于理解和维护为临时数据设置合适的过期时间生产环境避免使用KEYS *命令使用SCAN命令进行大量键的遍历定期监控键空间的使用情况合理规划键的命名空间
评论
0 条
还没有评论,先写一条吧。