注意区分是数据类型还是数据结构。
Redis的数据类型分为五种基本数据类型以及3种扩展数据类型。
对于基本数据类型有:String,哈希,列表,集合,有序集合。

String:可以存储文本,二进制等。主要应用场景有Token,验证码,简单的对象等
哈希:以键值对形式存储,最常用的就是存储对象
列表:是一个有序的元素集合,支持从头部或者尾部插入或者删除元素。可以用来模拟消息队列。
集合:是无序且不包含重复元素的。支持交集,并集操作,查询效率为O(1),可以用来实现去重,共同好友等功能。对于查询效率为O(1)的解释,是集合底层使用了哈希表或者整数集合。当集合中元素多的时候,采用哈希表;元素采用整数集合,整数集合是一个有序数组,采用二分查找,因为元素较少,近似为O(1)。
有序集合:是有序且不包含重复元素的。每个元素会有一个对应的score值。根据score值给元素排序。适用于排行榜。
再来简单说说扩展数据类型:GEO,HyperLogLog,Bitmap
GEO:是用来存储和查询地理位置信息的。可以用来搜索附近商家,两点之间距离等
HyperLogLog:是一种概率性数据结构,以12KB的空间可以判断出海量数据当不重复元素的个数,存在0.81%的误差。可以用来统计网站的热度之类的
Bitmap:把二进制位紧凑在一块内存当中的。每一位表示一个状态。比如0表示已签到,1表示未签到。如果有4个人要统计,可以表示1110,即有三人已签到,一人未签到。如此计算1亿人的签到情况只需要占用1,0000,0000÷8÷1024约等于12KB空间。