深入浅出Redis读取原理(redis 读取原理)
Redis是目前NoSQL类最为活跃的键值对存储系统之一,在它的内部有很多变化将其区别于其它KV存储系统。当一个新的键插入到Redis时,内部的读取原理是怎么样的呢?我们先来看看Redis的读取原理:
Redis通过一个数据结构,叫做字典,来保存数据。在读取操作开始之前,Redis会先检索该字典中是否存在对应的键。如果存在,Redis可以在常数时间内检索出对应的值,可以如下代码演示:
//如果字典中存在被查询的key
if(dict.find(key)){
//返回对应key的value
value = dict.get(key);
}
若字典中没有对应的key,则需要查找哈希表来看看是否有该键。哈希表可以在Redis中通过一个称作“对象”的数据结构来实现的。这个对象可以保存多种不同类型的数据,且每种类型的数据都有一个相应的处理函数。在Redis中,字符串和列表等键值都是存储为对象的,而读取操作也是由对象执行的。可以如下代码演示:
//如果hash表中存在该key
if(hash_table.find(key)){
//根据key对应对象的类型
switch(obj.type){
case STRING:
value = string_handle(obj);
break;
case LIST:
value = list_handle(obj);
break;
…
}
}
以上就是Redis读取操作的原理,如果键不存在,Redis会从哈希表中查找,如果哈希表中有该键,根据键对应对象的类型,会有相应类型的处理函数,从而可以取出键对应的值。
总结起来,Redis读取操作时,会先在字典中查找,若字典中不存在该键,则会在哈希表中查找,并调用相应类型的处理函数,从而可以取出键对应的值。