avatar

目录
redis数据结构与底层

Redis的数据结构

基本数据结构

  • String 字符串

  • Hash 散列

  • List 列表

  • Set 集合

  • Sorted Set 有序集合

进阶

  • bitmap 位图

  • GeoHash

  • HyperLogLogs

终极

  • Streams

Redis的内部编码

  • int

  • raw

  • embstr

  • linkedList

  • zipList

  • skipList

  • hashTable

  • intset

  1. String(int raw embstr)

  2. List(linkedList zipList)

  3. sortedSet(zipList skipList)

  4. Hash(zipList hashTable)

  5. Set(hashTable intset)

应用场景

  1. 缓存(随机访问速度,Disk是ms级别,SSD是微秒级别,内存则是纳秒级别)

  2. 计数器

  3. 分布式ID生成(步进)

  4. 海量数据统计(bitmap)

  5. 会话缓存(应用会话缓存存储,保证应用的高可用可伸缩性)

  6. 分布式队列、阻塞队列(List,lpush/rpush rpop/lpop 读取写入数据)

  7. 分布式锁(setNx)

  8. 热点数据存储(list结构,ltrim)

  9. 社交需求

    set交集(共同好友),set差集(好友推荐、文章推荐),排行榜zset

  10. 延迟队列([时间戳+需要延迟时间],score,消息内容作为元素,zadd生产消息,消费者使用zrangeByScore获取当前时间之前的数据,然后rem key)

redis的二进制数据安全特性 binary safe

redis的String类型不同于C语言的string类型

redis的String=>SDS(Simple Dynamic String)

SDS的结构

3.2前

SDS=>len(int),free(int),buffer(string)

3.2后

SDS=>5种string类型

SDS_TYPE_5, SDS_TYPE_8, SDS_TYPE_16, SDS_TYPE_32, SDS_TYPE_64

。。。

内存与分配机制

Redis扩容=>(需加大小+原大小)x2
文章作者: thf
文章链接: http://pcbopcbo.github.io/2020/08/14/2020081410/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 漂泊的个人笔记

评论