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