MST

星途 面试题库

面试题:Redis字符串对象内部编码方式及应用场景

请阐述Redis字符串对象常用的内部编码方式有哪些,并说明每种编码方式在什么样的应用场景下会被采用。
21.9万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试
  • int编码
    • 应用场景:当字符串对象保存的是整数值,且这个整数值可以用 long 类型(一般为64位有符号整数)表示时,Redis会使用 int 编码。例如,保存用户ID、计数等简单整数值场景,这种编码方式内存占用少,操作效率高。
  • embstr编码
    • 应用场景:当字符串对象保存的是长度小于等于39字节的字符串时,Redis会采用 embstr 编码。这种编码方式将RedisObject和SDS结构体连续分配在一块内存中,减少了内存碎片,并且在读取时只需要一次内存查找,适用于短字符串的频繁读取场景,比如缓存网页的一些短标签、小配置信息等。
  • raw编码
    • 应用场景:当字符串对象保存的字符串长度大于39字节,或者字符串对象在创建时长度就大于39字节,Redis会使用 raw 编码。它适用于存储长文本,如文章内容、长JSON字符串等大数据量字符串场景。