Redis中数据类型的使用场景介绍
string 字符串
- 缓存功能
比如缓存用户的信息,将一个对象序列化后,缓存到redis中。 - 计数功能
记录粉丝数、视频播放量等等。 - 共享session
将session会话信息保存到redis中,多个服务器通过redis来获取session会话信息。 - 限速
例如限制手机号每分钟发送短信数不超过4条,可以设置一个key为msg:limit:135xxxxxxxx,值为发送次数的字符串,并且有效期是60s,当存在该key并发送次数大于4时,将不能发送短信。
hash 哈希
- 用来保存对象
如用户信息、商品信息等,map中的key是字段名,value是字段的值。可以对应mysql数据库,以user表为例:
user表中有3个字段:uid、name、gender、major;对应值为1、xiaoma、man、computer。
则保存到redis中的命令:set user:1 name xiaoma set user:1 gender man set user:1 major computer
扩展:从上述的例子中我们似乎可以总结出redis中键key的命名方式,一般推荐使用“业务名:对象:id:[属性]”(也可以不要分号)。例如MySQL的数据库名为vs,用户表为user,那么对应的键就可以用“vs:user:1”,“vs:user:1:name”来表示,如果redis只被一个业务使用,也可以去掉“vs:”。
list 列表
- 消息队列
可以通过redis的lpush+brpop命令组合即可实现阻塞队列,生产者客户端使用lpush从列表左侧插入元素,多个消费者客户端使用brpop命令阻塞式的“抢”列表尾部的元素。 - 文章列表
存储每个用户自己的文章列表,并可以实现分页。 - 其他
lpush + lpop = Stack(栈) lpush + rpop = Queue(队列) lpush + ltrim = Capped Collection(有限集合) lpush + brpop = Message Queue(消息队列)
set 集合
- tag 标签
找共同兴趣 - 粉丝
找共同粉丝
zset有序集合
- 排行榜系统