摘要:
前言 FastDFS主要解决互联网中小文件存储存储问题,例如图片,短视频,提供上传和下载功能,轻量级的设计,结构非常简单,主要包含三个角色客户端,Tracer服务,Storage服务。Tracer服务提供了对客户端请求负载均衡和路由作用,Storage服务提供真正的上传下载,数据同步,冗余备份... 阅读全文
摘要:
__func__宏__func__返回当前的函数名,也可以返回class和struct名。 __VA_ARGS__宏可变参数宏 noexceptnoexcept操作会阻止异常扩散,被noexcept修饰的函数,如果throw()抛出异常,则直接调用std::terminate()结束程序,ca... 阅读全文
摘要:
关于KV数据库leveldb的介绍,网上已经太多了,这里只是自己再学习源码过程中,整理的笔记,磁盘存储和内存存储的结构用了伪代码表示出来了,首先是内存中存储结构,然后是log文件存储结构和磁盘数据sst文件存储结构。 MemTable存储格式 MemTable底层是用skiplist(跳跃表)... 阅读全文
摘要:
0.前言 Redis目前热门NoSQL内存数据库,代码量不是很大,本系列是本人阅读Redis源码时记录的笔记,由于时间仓促和水平有限,文中难免会有错误之处,欢迎读者指出,共同学习进步,本文使用的Redis版本是2.8.19。 1.数据结构篇 Redis之Hash数据结构 http... 阅读全文
摘要:
0.前言 Redis有序集合ZSet可以按分数进行排序, 存储结构可能使用ziplist,skiplist和hash表, zset_max_ziplist_entries和zset_max_ziplist_value两个字段控制zset采用何种存储方式, zset_max_ziplist_ent... 阅读全文
摘要:
0.前言
Redis默认最大内存大小是应用程序可访问的内存大小, 32位windows下是2GB, linux下是3GB. 64位下可以访问的内存为2^64字节, Redis提供了maxmemory字段来限制使用的最大内存. 既然提供了最大内存限制, 那么当我们程序达到最大值时, Redis使用了... 阅读全文
摘要:
Redis作为内存数据库,所有数据都保存在内存中, 一旦程序停止工作, 数据都将丢失. 需要我们重新从其他地方加载数据. 不过Redis提供了两种方式保存Redis中的数据一种是dump内存直接存入rdb文件中,一种是存在aof文件中,aof文件存储的是一条一条存储和修改数据的命令,类似... 阅读全文
摘要:
0.前言redis对无序集合的操作几个命令,本文介绍几个命令实际操作过程。 "1.sadd命令" "2.求差集和求并集命令" "3.求交集命令" <span id="sadd" </span 1.sadd命令 <span id="sdiffunion" </span 2.求差集和并集命令(... 阅读全文
摘要:
0.前言 redis初始创建hash表,有序集合,链表时, 存储结构采用一种ziplist的存储结构, 这种结构内存排列更紧密, 能提高访存性能. 本文介绍ziplist数据结构 1.ziplist存储结构 ziplist并没有定义明确的结构体, 根据存储结构我们可以定义ziplist如下... 阅读全文
摘要:
0.前言
Redis中有序集合zset需要使用skiplist作为存储数据结构, 关于skiplist数据结构描述可以查询wiki, 本文主要介绍Redis实现的skiplist的细节. 1.数据结构定义 2.创建跳跃表 创建跳跃表过程比较简单, 初始化zskiplist数据结构,... 阅读全文