Redis基础篇

一、从常用数据结构说起

上文说到Redis提供了丰富的数据结构,包括STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)和ZSET(有序集合)基本数据类型。

先来一波操作感受一下:

Redis基础篇

基本的数据类型的大概使用就到这里,接下来就分析一下它的内部结构是怎么实现的。

二、底层实现

Redis是KV类型的数据库,Key-Value我们一般会用什么数据结构存储?

哈希表!没错Redis的最外层确实也是通过hashtable实现的。在Redis里面每个键值对都是一个dictEntry,通过指针指向key的存储结构和value的存储结构,此外还有一个next存储里指向下一个键值对的指针。

typedef struct dictEntry {     
void *key; //key void*表示任意类型指针      
union {                           
void      *val;//value定义        
uint64_t  u64;        
int64_t   s64;        
double   d;     
} 
v;     
struct dictEntry *next;   
//next指针 
} 
dictEntry;

看到这里大家会有疑惑,那过期时间放在哪里?

对,实际上在dicEntry的外面还有一层redisDB。

/* Redis数据库结构体 */ 
typedef struct redisDb 
{     
// 数据库键空间,存放着所有的键值对(键为key,值为相应的类型对象)     
dict *dict;                      
// 键的过期时间     
dict *expires;                   
// 处于阻塞状态的键和相应的client(主要用于List类型的阻塞操作)     
dict *blocking_keys;            
// 准备好数据可以解除阻塞状态的键和相应的client     
dict *ready_keys;                
// 被watch命令监控的key和相应client     
dict *watched_
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值