Redis底层分析
2021/10/4 19:12:37
本文主要是介绍Redis底层分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Redis为kv的,而Redis底层又是由c语言写成的,一切皆字典dict,和java的一切皆对象Object
Redis的key类型一般为字符串,value为redis类型RedisObject这里的kv称为dictEntry
相当与java中的Map<String, redisObject>
bitmap底层为String类型,hyperloglog底层为String,GEO底层为zset
1.上帝视角
redisServer -> redisDB -> dict -> dictht -> dictEntry -> {String, list, hash, set, zset}
从硬件,网络到数据库到内部资源表到资源表到落地是实体
2.disctEntry
上文的kv键值对,所有的key为String,所有的value为redisObject
3.redisObject
存在的结构体的内容为type,encoding,lru,refcount
type:string.list.set.zset.hash
encoding:当前值对象底层存储的编码类型
lru:采用lru算法清除内存的对象
refcount:记录对象引用次数
4.string的type和3大编码转换
这里set hello world,key为String,但是String是存储在redis自定义的sds,动态字符串中,value为保存在redisObject中
string的encoding:
1.int
2.raw
3.emstr
如果为数字的话encoding为int,如果不是数字的话为embstr,如果字符长度大于44的话为raw
长度0 ~ 19的话为int, 19 ~ 44 为str, >44 为raw
数字的话为int,不是数字为embstr,但是如果数字大于19 小于44的话为embstr。
全部的encoding:
如果命令行为set age 17的话底层的C语言:
set age 17 { type:string encoding:int lru refcount }
5.Redis底层的数据结构
这篇关于Redis底层分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识