likes
comments
collection
share

浅说一下Redis在内存的存储结构

作者站长头像
站长
· 阅读数 19

1、介绍

Redis 是内存存储;我们放在Redis的数据,都是以键值对形式,存在内存;

2、数据库结构

 typedef struct redisDb {
     dict *dict;
     dict *expires;  
     dict *blocking_keys; 
     dict *ready_keys;
     dict *watched_keys;
     int id; 
     long long avg_ttl;
     list *defrag_later; 
 } redisDb;

重点关注dict结构;他代表了我们存入的key-value存储,我们平常添加数据,就是往dict里添加

可以看到,dict其实就是我们前面介绍的hash对象结构

 typedef struct dict {
      dictType *type;
      void *privdata;
      dictht ht[2];
      long rehashidx; /* rehashing not in progress if rehashidx == -1 */
      unsigned long iterators; /* number of iterators currently running */
 } dict;

redisDB即数据库对象,指向了数据字典,字典里面包含了我们平常存储的k-v数据,k是字符串对象,value是任意Redis对象

浅说一下Redis在内存的存储结构

3. 过期键

Redis数据都可以设置过期键,这样到了一定时间,这些对象就会自动过期并回收,那么过期键,又是存储在哪里的?

过期键存储在expires字典上

浅说一下Redis在内存的存储结构

注意,这里的dict中和expires中key对象,实际都是存储的String对象指针,所以并不会重复占用内容,Redis对内存的使用都是很珍惜的

转载自:https://juejin.cn/post/7390413094445383680
评论
请登录