redis基本使用
1. 字符串(String)
存储文本、数字或二进制数据,最大支持 512MB。
常用命令
命令 | 说明 | 示例 |
---|---|---|
SET key value |
设置键值 | SET name "Alice" |
GET key |
获取值 | GET name → "Alice" |
DEL key |
删除键 | DEL name |
INCR key |
值自增1(整数) | INCR counter |
DECR key |
值自减1 | DECR counter |
INCRBY key n |
值增加n | INCRBY counter 5 |
APPEND key str |
追加字符串 | APPEND name " Smith" → "Alice Smith" |
STRLEN key |
获取字符串长度 | STRLEN name → 11 |
SETEX key seconds value |
设置值并指定过期时间 | SETEX token 3600 "abc123" |
MSET key1 val1 key2 val2 |
批量设置键值 | MSET k1 "v1" k2 "v2" |
MGET key1 key2 |
批量获取值 | MGET k1 k2 → ["v1", "v2"] |
2. 哈希(Hash)
存储字段-值对(类似 JSON 对象),适合存储对象。
常用命令
命令 | 说明 | 示例 |
---|---|---|
HSET key field value |
设置字段值 | HSET user:1 name "Alice" |
HGET key field |
获取字段值 | HGET user:1 name → "Alice" |
HDEL key field |
删除字段 | HDEL user:1 name |
HGETALL key |
获取所有字段和值 | HGETALL user:1 → {"name":"Alice", "age":"30"} |
HKEYS key |
获取所有字段名 | HKEYS user:1 → ["name", "age"] |
HVALS key |
获取所有字段值 | HVALS user:1 → ["Alice", "30"] |
HINCRBY key field n |
字段值增加n | HINCRBY user:1 age 1 |
HEXISTS key field |
检查字段是否存在 | HEXISTS user:1 name → 1 (存在) |
3. 列表(List)
双向链表,支持队列(FIFO)和栈(LIFO)操作。
常用命令
命令 | 说明 | 示例 |
---|---|---|
LPUSH key value |
左侧插入元素 | LPUSH tasks "task1" |
RPUSH key value |
右侧插入元素 | RPUSH tasks "task2" |
LPOP key |
左侧弹出元素 | LPOP tasks → "task1" |
RPOP key |
右侧弹出元素 | RPOP tasks → "task2" |
LRANGE key start end |
获取范围内元素 | LRANGE tasks 0 -1 (获取全部) |
LLEN key |
获取列表长度 | LLEN tasks → 2 |
LINDEX key index |
获取指定位置元素 | LINDEX tasks 0 → "task1" |
LREM key count value |
删除指定值的元素 | LREM tasks 1 "task1" |
4. 集合(Set)
无序且唯一的元素集合,适合去重和集合运算。
常用命令
命令 | 说明 | 示例 |
---|---|---|
SADD key member |
添加元素 | SADD tags "redis" "db" |
SMEMBERS key |
获取所有成员 | SMEMBERS tags → ["redis", "db"] |
SREM key member |
删除元素 | SREM tags "db" |
SISMEMBER key member |
检查是否存在于集合 | SISMEMBER tags "redis" → 1 (存在) |
SCARD key |
获取集合大小 | SCARD tags → 1 |
SINTER key1 key2 |
返回多个集合的交集 | SINTER tags1 tags2 |
SUNION key1 key2 |
返回并集 | SUNION tags1 tags2 |
SDIFF key1 key2 |
返回差集(key1有但key2没有) | SDIFF tags1 tags2 |
5. 有序集合(Sorted Set / ZSet)
带权重的集合,按分数(score)排序,适合排行榜。
常用命令
命令 | 说明 | 示例 |
---|---|---|
ZADD key score member |
添加成员(带分数) | ZADD leaderboard 100 "Alice" |
ZRANGE key start end |
按分数升序返回成员 | ZRANGE leaderboard 0 -1 |
ZREVRANGE key start end |
按分数降序返回成员 | ZREVRANGE leaderboard 0 -1 |
ZSCORE key member |
获取成员的分数 | ZSCORE leaderboard "Alice" → 100 |
ZRANK key member |
获取升序排名(从0开始) | ZRANK leaderboard "Alice" |
ZREVRANK key member |
获取降序排名 | ZREVRANK leaderboard "Alice" |
ZINCRBY key increment member |
增加成员分数 | ZINCRBY leaderboard 50 "Alice" |
6. 位图(Bitmap)
通过二进制位操作存储布尔值(如用户签到记录)。
常用命令
命令 | 说明 | 示例 |
---|---|---|
SETBIT key offset value |
设置位的值(0/1) | SETBIT signin:user1 0 1 (第0天签到) |
GETBIT key offset |
获取位的值 | GETBIT signin:user1 0 → 1 |
BITCOUNT key |
统计值为1的位数 | BITCOUNT signin:user1 → 1 |
BITOP operation destkey key1 key2 |
位运算(AND/OR/XOR/NOT) | BITOP AND result signin:user1 signin:user2 |
7. HyperLogLog(基数统计)
用于高效统计不重复元素数量(如 UV 统计)。
常用命令
命令 | 说明 | 示例 |
---|---|---|
PFADD key element |
添加元素 | PFADD visitors "user1" "user2" |
PFCOUNT key |
统计基数 | PFCOUNT visitors → 2 |
PFMERGE destkey sourcekey1 sourcekey2 |
合并多个 HyperLogLog | PFMERGE total visitors1 visitors2 |
总结
数据结构 | 特点 | 典型场景 |
---|---|---|
String | 简单键值 | 缓存、计数器 |
Hash | 字段-值映射 | 存储对象(用户信息) |
List | 有序可重复 | 消息队列、最新动态 |
Set | 无序唯一 | 标签、好友关系 |
Sorted Set | 有序唯一 | 排行榜、优先级队列 |
Bitmap | 位操作 | 签到、布尔统计 |
HyperLogLog | 基数估算 | UV 统计 |
掌握这些命令后,可以灵活应对大部分 Redis 使用场景!官方文档(redis.io/commands)是更全面的参考。