Redis各数据类型的应用场景

Redis工作中经常用到,但是最常用的基本都是string,那其他一些数据结构适合什么应用场景呢?

string——储存简单的数据

string类型是Redis中最基本的数据类型,其在Redis中是二进制安全,意味着这种数据类型可以接受任何格式的二进制数据,例如一张JPED格式的图片或者JSON格式的字符串。在Redis中字符串类型最多可以容纳的数据长度为512MB

Key Value
“name” “well jay”
“city” “chengdu”

应用场景:
由于string类型灵活,可以储存大量的数据,所以经常用来缓存数据,例如App中常见的商品分类栏JSON,这类的特点是:访问频率高,数据不会经常改变。

hash——储存对象的数据

hash类型很接近数据库的模型,key是唯一值,value是一个hashmap的结构

id name city
1 welljay chengdu

应用场景:
常见的功能是根据id获取用户信息,例如根据id获取用户的昵称、头像等;(为什么不用string,因为string中通常储存的是整个json数据,如果需要得到或者修改用户的昵称,需要查询出整个value后还要把json<->对象互相转换,增加了没必要的性能开销和复杂性)

list——模拟队列操作

Redis中的list是按照插入的顺序排序的字符串链表,可以作为简单的消息队列使用;

应用场景:
发送短信之类的可以异步完成的操作,即可放入消息队列中。异步+错峰

set——无序且不重复的元素集合

Redis中set类型可以看作是没有排序、不重复的集合;另外set之间支持聚合运算,交集、差集、并集等,这些操作在Redis内部完成,效率非常高;

应用场景:
社交类app中,会有共同好友的信息,可以轻松通过set的交集运算得到结果

sort set——有序且不重复的元素集合

sorted-set类型与set类型很相似,不允许出现重复的元素。主要差别在于sorted-set中提供了一个分数(score)与每一个成员对应,Redis根据score对成员进行排序

应用场景:
sorted-set类型适用于各种类型的排行榜。
zadd movieTop 200 xuezhangangjuling
zadd movieTop 100 xiaoshidai