支持9种数据结构
- string
- list
- hash
- set
- zset
- bitmap
- GEO
- stream
- hyperLogLog
应用场景
string
基本的key - value 数据类型,key是唯一标识,value是具体的值,value的值不仅仅可以是字符串,也可以是数字,value的可以容纳的做大数据长度是512M
list
一个有序的数据集,可以向list中的任意位置插入字符串,redis3.2版本之前list的底层是由双向链表或压缩列表实现,后面改用了quickLIst实现
hash
一个键值对集合
set
一个键值唯一的无序集合,支持求差集、并集、交集,可用于查找共同好友、控制用户唯一点赞等场景
zset
一个键值唯一的有序集合,相比set多了core的分值字段,对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序集合的元素值,一个是排序值。可以用于排行榜等场景,比如学生的成绩排名,游戏积分排名、视频播放排名、点赞排名
bitmap
即位图,是一串连续的二进制数组,可以通过offset偏移量来定位元素。bitmap使用计算机中最小的单位bit(0|1)来表示,只能有两种状态,多用于二只统计场景,比如用用户某天是否签到
1、该类型的时间复杂度是0(1),且非常节约存储空间,一个用户一天的签到只需要1bit来存储,一个用户一年的签到量仅需365bit(约45KB)
2、Bitmap 本身是用 String 类型作为底层数据结构实现的一种统计二值状态的数据类型,String 类型是会保存为二进制的字节数组,所以,Redis 就把字节数组的每个 bit 位利用起来,用来表示一个元素的二值状态,你可以把 Bitmap 看作是一个 bit 数组。
GEO
主要用于存储地理位置信息,坐标二维化,支持搜索某个坐标附件N公里内的其他信息。比如用于搜索附近的车辆、餐厅等
stream
支持消息订阅,订阅组等
hyperLogLog
是一种用于「统计基数」的数据集合类型,基数统计就是指统计一个集合中不重复的元素个数。但要注意,HyperLogLog 是统计规则是基于概率完成的,不是非常准确。可以用于统计UV等