redis map 过期时间_Redis 数据库、键过期的实现

本文深入探讨了Redis作为内存数据库的数据存储方式,尤其是键的过期策略。Redis通过dict保存键值对,利用expires字典存储过期时间。过期策略包括惰性删除和定时部分删除,以平衡时间和空间。activeExpireCycle函数负责定时删除过期键,通过计算CPU时间限制和检查一定数量的键来决定删除操作。
摘要由CSDN通过智能技术生成

今天看看作为内存数据库,Redis 是怎么存储数据的以及键是怎么过期的。

阅读这篇文章你将会了解到:

  • Redis 的数据库实现
  • Redis 键过期的策略

数据库的实现

我们先看代码 server.h/redisServer

struct redisServer{ ... //保存 db 的数组 redisDb *db;  //db 的数量 int dbnum; ...}

再看redisDb的代码:

typedef struct redisDb { dict *dict; /* The keyspace for this DB */ dict *expires; /* Timeout of keys with a timeout set */ dict *blocking_keys; /* Keys with clients waiting for data (BLPOP)*/ dict *ready_keys; /* Blocked keys that received a PUSH */ dict *watched_keys; /* WATCHED keys for MULTI/EXEC CAS */ int id; /* Database ID */ long long avg_ttl; /* Average TTL, just for stats */} redisDb;

总体来说redis的 server 包含若干个(默认16个) redisDb 数据库。

815626e585d6ee1f03e2b1c37ceee623.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值