1.概述
Redis不是一个普通的key-value存储器,它实际上是一个支持不同类型的值数据结构服务。虽然在传统的key-value服务中,将字符串键与字符串值相关联,但在Redis中值不仅限于简单的字符串,还可以保存更复杂的数据结构。
2.Redis底层数据存储结构
2.1Redis是一个键值对(key-valuepair)数据库服务器
Redis内部整体的存储结构是一个大的HashMap,key冲突通过链表去实现,每个dictEntry为一个key/value对象,value为RedisObject。
RedisServer--RedisDB(dict)--dictht--dicEntry--redisObject--DataTypes
redisServer:默认包含16个redisDb
redisDb:*dict该数据库的键空间
dictht:通过两个Hashtables存储键值对数据
ht[0]:存储正常情况下的所有数据
ht[1]:只有ReHash过程中使用
dicEntry:在dict.h文件中定义dictEntry**table数组,每个元素单个键值对指针,还包含下一个Entry指针,
redisObject-prt:具体的数据结构指针
dictEntry:存储key-value的地方,dictEntry结构体
typedefstructdictType{uint64_t(*hashFunction)(constvoid*key);//hashthegivenkeyvoid*(*keyDup)(void*privdata,constvoid*key);//copykeyvoid*(*valDup)(void*privdata,constvoid*obj);//copyvalueint(*keyCompare)(void*privdata,constvoid*key1,constvoid*key2);//