字符串(String)
Redis最基础的数据类型,支持存储文本、二进制、数字等任意形式数据,单个键最大支持512MB。二进制安全,支持原子性自增/自减操作(如计数器、分布式锁)。底层采用简单动态字符串(SDS)结构,有embstr(存储<44字节数据)、raw(存储>44字节数据)、int(存储整数)三种编码方式。
哈希(Hash)
键值对集合,一个键可存储多个字段-值对,适合存储结构化数据(如用户信息、商品属性)。底层实现包括压缩列表(ziplist,7.0后被listpack取代)和哈希表(hashtable),字段数量或值长度超阈值时自动转换。支持单独操作字段,节省内存且减少数据传输。
列表(羋L鷲绠线st)
有序字符串列表,支持两端(头部/尾部)快速插入/删除(时间复杂度O(1)),元素可重复。底层根据元素数量选择压缩列表(元素少)或双向链表(元素多)。典型场景:消息队列(RPUSH生产、LPOP消费)、最新消息列表(LPUSH+LTRIM固定长度)、历史记录存储。
集合(Set)
无序、不可重复的字符串集合,支持交集(SINTER)、并集(SUNION)、差集(SDIFF)等集合运算。底层实现包括整数集合(intset,元素全为整数时)和哈希表(hashtable)。应用场景:去重(如用户标签)、随机抽取(SRANDMEMBER)、共同好友计算。
有序集合(ZSet)带排序权重的无重复集合,元素关联分数(score)按分数自动排序。底层采用跳表(SkipList)结构,兼顾排序和快速查询。支持按分数范围或排名获取元素(ZRANGE/ZREVRANGE),动态调整分数(ZINCRBY)。典型场景:排行榜(如游戏积分、商品销量)、延迟队列(用时间戳作score)
流(Stream )
日志型数据结构,记录键值对并分配唯一ID,支持多消费者组持久化消费。底层基于压缩前缀树(rax)存储,可快速定位、插入或删除数据。适用于企业级消息队列(如订单处理、日志采集),支持死信队列(XCLAIM)和持久化存储(XGROUPCREATE)
地理空间(Geospatial )
基于有序集合(ZSet),通过Geohash算法将经纬度编码为score。支持附近查询(GEODIST计算距离)、范围搜索(GEORADIUS按半径筛选)。常用于社交"附近的人"、物流轨迹查询。
超日志(HyperLogLog)
概率型结构,高效估计集合基数(不同元素数量)。作为特殊字符串存储,仅需12KB内存即可统计百万级数据,误差约0.81%。应用:独立访客数(UV)统计广告点击量去重计数。
位图(Bitmap)
基于字符串的二进制位数组,支持按位操作(SETBIT、GETBIT)、位运算(BITOP)。适用:签到系统(记录每日打卡)、状态标记(用户活跃/离线)、百万用户性别标记等布尔统计。
位域(Bitfield )
位图扩展功能,支持对字符串中的任意位进行设置、增加或获取操作,处理1-63位无符号/有符号整数。例如,3位存储用户等级(0-7)、64位存储时间戳,适用:游戏关卡状态、设备传感器数据等小范围整数存储场景。
上一条:Redis集群搭建入门
下一条:Redis常用命令与数据结构详解