一、字符串(String)
Redis 的最基本数据类型,可以存储文本和数字。
bash
# 设置 key-value
SET key value
# 获取值
GET key
# 设置带过期时间
SETEX key 10 value # 10 秒后过期
# 追加字符串
APPEND key "append"
# 自增/自减
INCR counter # +1
INCRBY counter 10 # +10
DECR counter # -1
DECRBY counter 5 # -5
二、哈希(Hash)
哈希是键值对集合,类似 Go 中的 map 或对象。
bash
# 设置字段
HSET user name "Tom" age 18
# 获取单个字段
HGET user name
# 获取所有字段和值
HGETALL user
# 获取所有字段
HKEYS user
# 获取所有值
HVALS user
# 删除字段
HDEL user age
# 判断字段是否存在
HEXISTS user name
三、列表(List)
有序集合,可以用作队列或栈。
bash
# 左插入(栈)
LPUSH mylist "a" "b" "c"
# 右插入
RPUSH mylist "x" "y"
# 左弹出
LPOP mylist
# 右弹出
RPOP mylist
# 获取指定范围
LRANGE mylist 0 2 # 下标从 0 开始,包括结束下标
# 获取长度
LLEN mylist
# 删除指定元素
LREM mylist 1 "b" # 删除 1 个值为 b 的元素
四、集合(Set)
无序且唯一的集合。
bash
# 添加元素
SADD myset "a" "b" "c"
# 获取所有元素
SMEMBERS myset
# 删除元素
SREM myset "a"
# 判断元素是否存在
SISMEMBER myset "b"
# 集合运算
SUNION set1 set2 # 并集
SINTER set1 set2 # 交集
SDIFF set1 set2 # 差集
五、有序集合(Sorted Set,ZSet)
每个元素带分数(score),按分数排序。
bash
# 添加元素
ZADD myzset 100 "Tom" 200 "Jerry"
# 获取范围
ZRANGE myzset 0 -1 WITHSCORES # 从小到大
# 按分数获取
ZRANGEBYSCORE myzset 100 200
# 删除元素
ZREM myzset "Tom"
# 获取长度
ZCARD myzset
# 增加分数
ZINCRBY myzset 50 "Jerry"
六、键操作
bash
# 删除 key
DEL key
# 检查 key 是否存在
EXISTS key
# 设置过期时间(秒)
EXPIRE key 10
# 查看剩余生存时间(秒)
TTL key
七、事务(Transaction)
bash
MULTI
SET a 10
INCR a
EXEC
说明:
MULTI开启事务EXEC执行事务DISCARD放弃事务WATCH监视 key,用于乐观锁
八、发布订阅(Pub/Sub)
bash
# 订阅频道
SUBSCRIBE channel1
# 发布消息
PUBLISH channel1 "hello world"
# 取消订阅
UNSUBSCRIBE channel1
九、实用技巧
- 持久化
- RDB(快照)
- AOF(操作日志)
- 管道(Pipeline)
- 批量命令,减少网络开销
- 常用命令
FLUSHDB:清空当前库FLUSHALL:清空所有库INFO:查看 Redis 状态
十、总结
Redis 常用操作包括:
- 字符串 String
- 哈希 Hash
- 列表 List
- 集合 Set
- 有序集合 Sorted Set
- 键操作与过期
- 事务 Transaction
- 发布订阅 Pub/Sub
掌握这些内容,可以应对绝大多数 Go 后端开发场景,例如缓存、排行榜、消息队列、队列任务等。