Redis 是一个高性能的键值存储数据库,支持多种数据结构(如字符串、哈希、列表等),其命令通过 redis-cli
命令行工具或编程语言客户端执行,以下是核心命令分类及使用详解,所有语法均遵循 Redis 官方规范:
通用命令
-
KEYS pattern
查找匹配模式的键(生产环境慎用,阻塞性能)。KEYS user:* # 返回所有以"user:"开头的键
-
DEL key [key ...]
删除指定键。DEL user:1001 profile:1001
-
EXPIRE key seconds
设置键的过期时间(秒)。EXPIRE session_token 3600 # 1小时后过期
-
TTL key
查看键的剩余生存时间(秒)。TTL session_token # 返回 -2 表示键不存在,-1 表示永不过期
字符串(Strings)
适用于缓存、计数器等场景。
-
SET key value [EX seconds]
设置键值对,支持过期时间。SET website:visits 0 EX 60 # 初始化为0,60秒后过期
-
GET key
获取键的值。GET website:visits # 返回 "0"
-
INCR key
将键的值增1(原子操作)。INCR website:visits # 值变为1
-
MSET key value [key value ...]
批量设置键值。MSET name "Alice" age 30 city "Paris"
哈希(Hashes)
存储对象属性,如用户信息。
-
HSET key field value
设置哈希中的字段值。HSET user:1001 name "Bob" email "bob@example.com"
-
HGET key field
获取哈希字段的值。HGET user:1001 name # 返回 "Bob"
-
HGETALL key
获取哈希所有字段和值。HGETALL user:1001 # 返回字段列表和值
-
HINCRBY key field increment
增加哈希字段的数值。HINCRBY user:1001 score 5 # 分数增加5
列表(Lists)
实现队列、消息流等功能。
-
LPUSH key element [element ...]
从左侧插入元素(先进后出)。LPUSH messages "task1" "task2" # 列表:["task2", "task1"]
-
RPUSH key element [element ...]
从右侧插入元素(先进先出)。RPUSH queue "job1" "job2" # 列表:["job1", "job2"]
-
LPOP key
移除并返回左侧第一个元素。LPOP messages # 返回 "task2"
-
LRANGE key start stop
获取列表片段(支持负数索引)。LRANGE queue 0 -1 # 返回所有元素
集合(Sets)
存储唯一元素,用于去重或标签。
-
SADD key member [member ...]
添加元素到集合。SADD tags "redis" "database" "cache"
-
SMEMBERS key
返回集合所有成员。SMEMBERS tags # 返回无序的元素列表
-
SINTER key [key ...]
求多个集合的交集。SINTER tags1 tags2 # 返回共同拥有的标签
-
SISMEMBER key member
检查元素是否存在。SISMEMBER tags "redis" # 存在返回1,否则0
有序集合(Sorted Sets)
带权重的集合,适用于排行榜。
-
ZADD key score member
添加带分数的成员。ZADD leaderboard 100 "Alice" 85 "Bob"
-
ZRANGE key start stop [WITHSCORES]
按分数升序返回成员(结合WITHSCORES
显示分数)。ZRANGE leaderboard 0 -1 WITHSCORES # 返回 ["Bob","85","Alice","100"]
-
ZREVRANGE key start stop
按分数降序返回成员(如排行榜)。ZREVRANGE leaderboard 0 0 # 返回第一名:"Alice"
-
ZINCRBY key increment member
增加成员的分数。ZINCRBY leaderboard 20 "Bob" # Bob分数变为105
事务与管道
-
事务(MULTI/EXEC)
批量执行命令(非原子性,中间可能失败)。MULTI SET balance:1001 500 INCR user:count EXEC
-
管道(Pipeline)
一次性发送多条命令(减少网络延迟)。# 在编程客户端中(例如Python): pipeline = redis_client.pipeline() pipeline.set("key1", "value1") pipeline.get("key2") results = pipeline.execute()
注意事项
- *生产环境规避 `KEYS
**: 使用
SCAN` 命令迭代查询(非阻塞)。 - 键命名规范:
建议使用object_type:id:field
格式(如user:1001:profile
)。 - 内存管理:
定期检查内存占用(INFO memory
),对大数据集分片存储。 - 持久化策略:
根据需求选择 RDB(快照)或 AOF(日志追加)。
最佳实践
- 读写分离:读操作指向从节点(Replica),写操作指向主节点(Master)。
- 连接池:复用客户端连接(如 Java 的 JedisPool)。
- Lua 脚本:复杂操作使用
EVAL
保证原子性。 - 监控工具:通过
redis-cli --stat
或INFO
命令监控状态。
引用说明: 基于 Redis 官方文档(redis.io/commands)整理,所有命令语法和示例均经过 Redis 7.0 版本验证,建议开发者查阅官方文档获取最新细节,或使用
HELP
命令查看内置帮助(如HELP SET
)。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/33457.html