数据结构

Redis 常用数据结构与使用场景_面试题

使用场景

String

  • 计数器
  • INCR article:readcount: {文章 id}
  • GET article:readcount: {文章 id}
  • Web 集群 session 共享
  • spring session + Redis 实现 session 共享
  • 分布式系统全局序列号
  • INCRBY orderId 1000

Hash

  • 对象缓存
  • HMSET user 1:name gd 1:balance 1888
  • 购物车
  • 结构:以用户 id 为 key,商品 id 为 field,商品数量为 value

购物车操作:

  • 添加商品 hset cart:1001 10088 1
  • 增加数量 hincrby cart:1001 10088 1
  • 商品总数 hlen cart:1001
  • 删除商品 hdel cart:1001 10088
  • 获取购物车所有商品 hgetall cart:1001

List

  • 微博和微信公号消息流

场景: 张三关注了李四, 王五, 张三发微博,消息 ID 为 10018:

  • LPUSH msg:{zs-ID} 10018

王五发微博,ID 为 10086:

  • LPUSH msg:{zs-消息ID} 10086
  • LRANGE msg:{zs-ID} 0 4

set

  • 微信抽奖小程序
  • 点击参与抽奖加入集合: SADD key {userlD}
  • 查看参与抽奖所有用户: SMEMBERS key
  • 抽取 count 名中奖者: SRANDMEMBER key [count] / SPOP key [count]
  • 共同关注的人

Zset

  • 实现排行榜

bitmap

  • 签到

geo

  • 附近的⼈