1.String
-
数据最大是512MB
-
使用场景
- 计数器功能,可以使用incr命令实现自增操作,来计数(统计文章的阅读量,粉丝数量)
- 系统中的一些配置值,Token令牌信息等
- session共享,在分布式系统中,由于有多台服务器,请求分发每次分发到不同的目标服务器可能都不一样,这时候就需要利用中间件来保存session的状态,我们可以把session保存到redis中
- 限流,需要对某些用户、某些接口、某些ip进行限流
2.List
- 字符串列表,按照插入顺序排序
- 使用场景
- 消息队列,可以使用lpush + brpop命令实现阻塞队列
- 分页查询,如果数据保存在缓存中,也可以使用list,可以使用 lrange key 0 19 获取分页
3.Hash
-
String类型的field已经value的映射表,类似Java的map
-
{
hash:{name:“zhangsan”,age:20},
hash2:{name:“lisi”,age:30},
…
}
-
使用场景:
- 可以存储一些对象信息,
- 购物车功能
- 使用用户id作为缓存key
- 使用商品编码skuCode作为hashKey
- 使用商品信息作为hashValue
4. Set
- 无序集合,集合中的元素都是唯一的
- 使用场景
- 社交类软件的共同好友
- 统计访问网站的ip地址
- 抽奖功能
5.ZSet
- 和set相同,无序集合,不同的是每个元素都会关联一个score分数,内部基于score进行排序(从小到大)分数可以重复
- 使用场景
- 排行榜功能