《7.3-键值对数据库-2.pptx》由会员分享,可在线阅读,更多相关《7.3-键值对数据库-2.pptx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、7.3 键值对数据库1 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发Redis数据库结构Redis数据库的实现原理【本节学习目标】2 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发一、Redis的数据库结构存储效率(memory)Redis内部维护一个db数组,每个db都是一个数据库,默认16个数据库。用select命令来切换数据库。(efficiency)的考虑,压缩数据、减少内存碎片等问题;快 速 响 应 时 间(fast response time)与 高 吞 吐 量(high throughput)的折中方案;单线程(single-threaded):简化数据结构
2、和算法的实现,通过异步IO和pipelining等机制来实现高速的并发访问3 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发1.数据库数组服务器中的数据库,redis.h/redisServer结构的db数组中,每个redisDb结构就代表一个数据库。struct redisServer ./一个保存着redisDb的数组,db中的每一项就是一个数据库 redisDb*db;.每个数据库由一个redisDb结构表示,其中redisDb结构中的字典dict保存了数据库中所有的键值对。redisDB结构体的定义:typedef struct redisDb ./保存数据库中所有的键值对
3、dict*dict;.Redis中的字典dict,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构;字典中的每个键是独一无二的4 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发2.字典结构每个数据库由一个redisDb结构表示,其中redisDb结构中的字典dict保存了数据库中所有的键值对。redisDB结构体的定义:typedef struct redisDb ./保存数据库中所有的键值对 dict*dict;.Redis中的字典dict,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构;字典中的每个键是独一无二的。typedef struct d
4、ict dictht ht2;int rehashidx;int iterators;dict;typedef struct dicht dicEntry*table;unsigned long size;unsigned long sizemark;unsigned long used;dictht;typedef struct dicEntry void*key;/键 union void*val;uint64_tu64;int64_ts64;v;struct dicEntry*next;dictEntry;5 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发字典结构图示字典层次结
5、构6 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发3 Rehash过程过程:创建一个新的哈希表,大小是当前的两倍(准确说还必须是2的幂次),然后把全部键值对重新散列到新的哈希表中,最后再用它替换原来的哈希表;rehash问题:具体过程如下:1).在ht1上分配一个更大的哈希表;2).“分多次”把ht0上的键值对重新散列到ht1上;3).当处理完所有键值对时,让ht0指向新的哈希表;7 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发4.对象结构redisObject对象来表示所有的key和value。8 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发对象结构特点对
6、象的编码对象空转时长,空转时长较高的那部分键会优先被Redis释放,从而回收内存。内存回收:当一个对象的引用计数为0时,释放该对象内存资源。对象共享:对象的应用计数另外一个功能就是对象的共享,当一个对象被另外一个地方使用时,可以直接在该对象引用计数上+就行。注意:Redis只对包含整数值的字符串对象进行共享9 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发二、Redis键值数据库的实现原理-原则数据库的操作、集群的设置简单,Redis内部维护一个db数组,每个db都是一个数据库,默认16个数据库。用select命令来切换数据库。存储效率(memory efficiency)的考虑,可
7、压缩数据、减少内存碎片、高速缓存和外存的数据交换算法等问题;快 速 响 应 时 间(fast response time)与 高 吞 吐 量(high throughput)的折中方案;单线程(single-threaded):简化数据结构和算法的实现,通过异步IO和pipelining等机制来实现高速的并发访问。10 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发1.键空间管理通过字典保存了数据库中的所有键值对,字典称为键空间。键空间的每个键都是一个字符串对象,键空间的值也就是数据库的值,可以是字符串对象,列表对象,哈希表对象,集合对象,有序集合对象中的任何一种。添加新键、删除键、
8、更新键、更新键、查找键读取一个键后,服务器会更新键的最近读取时间(LRU)时间,用于计算键的闲置时间。如果服务器在读取一个键时发现该键已经11 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发2.设置生存时间和过期时间用expire命令或者pexpire命令可以对一个键设置生存时间,自动删除生存时间为0的键。四个命令expire,pexpire,expireat,pexpireat。过期字典记录所有带过期时间的键程序可以通过过期字典检查一个给定键是否过期,检查给定键是否存在有过期字典并对该键是否过期进行判断12 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发3.过期键删除策略
9、系统提供三种删除策略删除过期键。定时删除:定时器控制。惰性删除:当获取键时检查键是否过期,过期就删除。定期删除:每隔一段时间,程序就对数据库进行一次检查,删除过期键13 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发4.复制功能 Redis复制主要包括RDB复制和AOF复制,RDB快照方式,AOF通过将发送到服务器的写操作命令记录下来,形成AOF文件。在RDB复制中,每次执行特定的命令(SAVE或BGSAVE)时创建一个新的RDB文件时,过期的键不保存到新创建的RDB文件中。载入时,过期键就不载入。当使用AOF,过期键删除之后,程序会向AOF文件追加一条删除命令14 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发Redis 总结Redis数据库结构-5中数据结构Redis数据库的实现原理-字典结构,对象架构,复制规则,过期规则等15 数据库原理及应用电子科技大学-张凤荔数据库系统原理与开发本节学习结束!
限制150内