Redis 核心数据类型与命令参考手册
侧边栏壁纸
  • 累计撰写 36 篇文章
  • 累计收到 1 条评论

Redis 核心数据类型与命令参考手册

ASN__
2026-04-10 / 0 评论 / 6 阅读 / 正在检测是否收录...

Redis 核心数据类型与命令参考手册

一、 Redis 数据类型概览

数据类型核心特性适用场景
字符串 (String)二进制安全,最大512MB,支持原子计数操作。缓存用户信息、计数器(访问量、点赞)、分布式锁、会话存储。
哈希 (Hash)键值对集合,适合存储对象,节省内存。每个哈希可存 2^32 - 1 个字段。存储用户/商品信息、配置管理、购物车数据。
列表 (List)有序字符串列表,支持双端操作,最多可存 2^32 - 1 个元素。消息队列、最新动态列表、任务队列、历史记录。
集合 (Set)无序且唯一的字符串集合,支持集合运算(交、并、差)。标签系统、好友关系、权限管理、去重处理。
有序集合 (Sorted Set)元素唯一,按分数(Score)排序,支持范围查询。排行榜、优先级队列、时间线、价格区间查询。

二、 通用命令与规范

1. 命令语法规范
  • 大小写:命令名称不区分大小写(建议大写)。
  • 分隔符:参数之间用空格分隔。
  • 参数表示[ ] 表示可选参数,| 表示多选一。
2. 键(Key)的命名规范
  • 风格:使用冒号 : 作为分隔符,采用层次化结构。
  • 示例user:1001:profilecache:article:1001lock:order:1001
  • 原则:使用有意义的名称,保持一致的命名风格,避免过长的键名。
3. 键的通用操作命令
命令描述示例
EXISTS key检查键是否存在EXISTS user:1001
TYPE key返回键的数据类型TYPE user:1001
DEL key [key ...]删除一个或多个键DEL user:1001 user:1002
RENAME key newkey重命名键RENAME oldname newname
EXPIRE key seconds设置键的过期时间(秒)EXPIRE session:abc123 3600
TTL key查看键的剩余生存时间(秒)TTL session:abc123
PERSIST key移除键的过期时间PERSIST session:abc123
KEYS pattern查找匹配模式的键 (生产环境慎用,会阻塞)KEYS user:*
SCAN cursor [MATCH pattern]非阻塞式迭代数据库中的键SCAN 0 MATCH user:* COUNT 10
DBSIZE返回当前数据库的键数量DBSIZE

三、 数据类型详解与命令参考

1. 字符串 (String)
基本操作
命令描述示例
SET key value设置字符串值SET name "Redis"
GET key获取字符串值GET name
APPEND key value追加字符串到末尾APPEND name " Database"
STRLEN key获取字符串长度STRLEN name
数值操作(原子性)
命令描述示例
INCR key将数值递增 1INCR page:views
INCRBY key increment将数值增加指定值INCRBY user:1001:points 100
DECR key将数值递减 1DECR counter
DECRBY key decrement将数值减少指定值DECRBY user:1001:points 50
批量与条件操作
命令描述示例
MSET k1 v1 k2 v2批量设置多个键值对MSET k1 v1 k2 v2
MGET k1 k2批量获取多个键的值MGET k1 k2
SETNX key value仅当键不存在时设置 (常用于分布式锁)SETNX lock:order "locked"
SETEX key seconds value设置值并指定过期时间SETEX session:abc 3600 "data"
SET key value EX seconds NX组合命令:带过期时间的锁SET lock:key "val" EX 30 NX

2. 哈希 (Hash)
基本操作
命令描述示例
HSET key field value设置哈希字段的值HSET user:1001 name "张三"
HGET key field获取哈希字段的值HGET user:1001 name
HDEL key field删除哈希字段HDEL user:1001 temp_field
HLEN key获取哈希字段数量HLEN user:1001
HKEYS key获取所有字段名HKEYS user:1001
HVALS key获取所有字段值HVALS user:1001
HGETALL key获取所有字段和值 (慎用,大哈希会阻塞)HGETALL user:1001
批量与数值操作
命令描述示例
HMSET key f1 v1 f2 v2批量设置多个字段HMSET user:1002 name "李四" age 30
HMGET key f1 f2批量获取多个字段的值HMGET user:1002 name age
HINCRBY key field increment将字段值增加指定整数HINCRBY user:1001 login_count 1
HSCAN key cursor MATCH pattern迭代哈希中的字段HSCAN user:1001 0 MATCH "*count*"

3. 列表 (List)
命令描述示例
LPUSH key value [value ...]从左侧(头部)插入元素LPUSH mylist "world" "hello"
RPUSH key value [value ...]从右侧(尾部)插入元素RPUSH mylist "redis"
LPOP key从左侧弹出元素LPOP mylist
RPOP key从右侧弹出元素RPOP mylist
LLEN key获取列表长度LLEN mylist
LRANGE key start stop获取指定范围元素LRANGE mylist 0 2
LTRIM key start stop保留指定范围的元素(修剪列表)LTRIM mylist 0 99
BLPOP key timeout阻塞式左端弹出(队列用)BLPOP queue1 30
BRPOP key timeout阻塞式右端弹出BRPOP queue1 30

4. 集合 (Set)
命令描述示例
SADD key member [member ...]添加元素到集合SADD tags "tech" "redis"
SREM key member从集合中删除元素SREM tags "tech"
SISMEMBER key member检查元素是否存在SISMEMBER tags "redis"
SMEMBERS key获取集合所有元素 (慎用,大集合会阻塞)SMEMBERS tags
SCARD key获取集合元素数量SCARD tags
SINTER key1 key2计算集合交集SINTER set1 set2
SUNION key1 key2计算集合并集SUNION set1 set2
SDIFF key1 key2计算集合差集 (key1 - key2)SDIFF set1 set2
SSCAN key cursor MATCH pattern迭代集合中的元素SSCAN tags 0 MATCH "user:*"

5. 有序集合 (Sorted Set)
命令描述示例
ZADD key score member [score member ...]添加元素及分数ZADD leaderboard 100 "player1"
ZREM key member删除元素ZREM leaderboard "player1"
ZSCORE key member获取元素的分数ZSCORE leaderboard "player1"
ZINCRBY key increment member增加元素的分数ZINCRBY leaderboard 10 "player1"
ZCARD key获取集合元素总数ZCARD leaderboard
范围查询
ZRANGE key start stop [WITHSCORES]按排名升序获取 (0为第1名)ZRANGE leaderboard 0 2 WITHSCORES
ZREVRANGE key start stop [WITHSCORES]按排名降序获取ZREVRANGE leaderboard 0 2
ZRANGEBYSCORE key min max按分数范围升序获取ZRANGEBYSCORE leaderboard 80 100
ZRANK key member获取元素升序排名 (从0开始)ZRANK leaderboard "player1"
ZREVRANK key member获取元素降序排名ZREVRANK leaderboard "player1"
删除与运算
ZREMRANGEBYRANK key start stop按排名范围删除元素ZREMRANGEBYRANK leaderboard 0 2
ZREMRANGEBYSCORE key min max按分数范围删除元素ZREMRANGEBYSCORE leaderboard 0 60
ZUNIONSTORE dest numkeys key [key ...]计算并集并存储ZUNIONSTORE result 2 set1 set2
ZINTERSTORE dest numkeys key [key ...]计算交集并存储ZINTERSTORE result 2 set1 set2

四、 补充:HyperLogLog (基数估算)

一种概率性数据结构,用于在极小的内存(12KB)下估算海量数据的去重元素数量(基数),误差率约 0.81%。

命令描述
PFADD key element [element ...]添加元素
PFCOUNT key返回估算的基数
PFMERGE destkey sourcekey [sourcekey ...]合并多个 HyperLogLog

五、 性能与选择建议

  1. 键管理:生产环境严禁使用 KEYS,改用 SCAN;大集合遍历用 SSCAN/HSCAN/ZSCAN
  2. 批量操作:优先使用 MSET/MGETHMSET/HMGET 减少网络开销。
  3. 过期时间:缓存数据务必设置 EXPIRE,防止内存无限增长。
  4. 数据类型选型

    • 需要去重且无序:Set
    • 需要排序且唯一:Sorted Set
    • 需要有序但允许重复:List
    • 存储对象且需单独更新字段:Hash
    • 简单缓存/计数器:String
0

评论

博主关闭了所有页面的评论