题目
Redis字符串类型的基本操作与应用场景
信息
- 类型:问答
- 难度:⭐
考点
Redis数据类型,字符串操作,过期时间设置
快速回答
Redis字符串是最基础的数据类型,支持文本、数字或二进制数据(最大512MB)。核心操作包括:
SET key value:存储键值对GET key:获取键对应的值INCR key:原子递增数值EXPIRE key seconds:设置过期时间SETEX key seconds value:存储值并设置过期时间
典型应用场景:缓存数据、计数器、会话存储等。
解析
1. 原理说明
Redis字符串(String)是二进制安全的,意味着可以存储任何数据(文本、序列化对象、图片等)。底层采用简单动态字符串(SDS)实现,支持高效的长度计算和追加操作。
2. 核心操作与代码示例
# 存储键值对
SET user:1001 "{\"name\":\"Alice\",\"age\":25}"
# 获取值
GET user:1001 # 返回 JSON 字符串
# 数值操作
SET counter 100
INCR counter # 值变为 101
INCRBY counter 5 # 值变为 106
# 过期时间(30秒后自动删除)
SETEX session:xyz 30 "user_token"
# 或分开设置
SET session:abc "temp_data"
EXPIRE session:abc 303. 最佳实践
- 缓存场景:存储数据库查询结果,用
SETEX设置合理过期时间 - 计数器:使用
INCR实现原子操作(如页面浏览量统计) - 大键优化:单键值不超过100KB,避免阻塞Redis单线程
- 命名规范:使用
object_type:id:field格式(如user:1001:profile)
4. 常见错误
- 忘记设置过期时间:导致无用数据长期占用内存
- 误用数值操作:对非数字值执行
INCR会返回错误 - 大键值问题:存储超大JSON(如10MB)影响性能,应考虑拆分或压缩
- 键名冲突:未使用命名空间导致键名覆盖(如多个服务共用
cache键)
5. 扩展知识
- 批量操作:
MSET/MGET提升效率(如MSET key1 val1 key2 val2) - 位操作:
SETBIT/GETBIT实现位图(如用户签到功能) - 其他数据类型:哈希(Hash)适合存储对象,列表(List)适合消息队列
- 持久化策略:RDB快照 vs AOF日志,根据业务需求选择