五种基本类型

  1. String(字符串)
    特点: Redis中最基础的数据类型,一个键对应一个值,值可以是字符串、数字或者二进制数据,最大能存储512MB。
    应用场景:
    缓存:存储用户会话、页面内容等。
    计数器:文章阅读量、库存扣减等。
    分布式锁:通过SETNX实现简单锁机制。
    短有效期数据:验证码(结合EXPIRE)。

常用命令:SET、GET、INCR、DECR、APPEND、SETNX等。

  1. List(列表)
    特点:双向链表,支持头部(Left)和尾部(Right)操作,元素可重复。
    应用场景:
    消息队列:生产者通过LPUSH推送任务,消费者通过BRPOP获取。
    最新动态:存储用户最新发布的文章(如LPUSH+LTRIM限制长度)。
    分页查询:LRANGE分页获取历史记录。
    常用命令:LPUSH/RPUSH、LPOP/RPOP、LRANGE、BLPOP(阻塞式弹出)。

  2. Hash(哈希)
    特点:键值对集合,适合存储对象(如用户信息)。
    应用场景:
    对象存储:用户信息(HMSET user:1 name “Alice” age 30)。
    部分更新:修改用户单个字段(HSET user:1 age 31)
    聚合统计:商品详情页的多属性缓存。
    常用命令: HSET、HGET、HMSET、HGETALL、HINCRBY。

  3. Set(集合)
    特点:无序且唯一的元素集合,支持交并差运算。
    应用场景:
    标签系统:用户兴趣标签(SADD user:1:tagstech music)
    去重:记录文章的唯一访问用户(SADD article:100:views user:1)。
    共同好友:SINTER user:1:friends user:2:friends。
    常用命令:SADD、SMEMBERS、SINTER(交集)、SUNION(并集)、SISMEMBER。

  4. ZSet(有序集合)
    特点:元素唯一,每个元素关联一个分数(score),按分数排序。
    应用场景:
    排行榜:游戏积分排名(ZADD leaderboard 1000 “PlayerA”)。
    带权重队列:任务优先级调度(分数表示优先级)。
    时间轴:按时间戳排序的动态(ZADD timeline 1630000000 “event1”)。
    常用命令:ZADD、ZRANGE、ZREVRANGE、ZRANK、ZINCRBY。

三种特殊类型

  1. BitMap(位图)
    特点:基于字符串的位操作,支持按位存取。
    应用场景:用户签到记录(每天对应一个位)、活跃用户统计。
    常用命令统计:SETBIT、GETBIT、BITCOUNT。
  2. HyperLoglog
    特点:基数统计(估算集合中不重复元素的数量),存在误差。
    应用场景:拥挤UV(独立访客数),误差率约0.81%。
    常用命令: PFADD、PFCOUNT、PFMERGE。
  3. GEO(地理位置)
    特点:基于有序集合实现,存储经纬度。
    应用场景:附近的人、商家地理位置查询。
    常用命令:GEOADD、GEODIST、GEORADIUS。