自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Franco的博客

学习,整理,积累,站在巨人的肩膀上厚积薄发

  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

转载 【Redis源码剖析】 - Redis内置数据结构之压缩列表ziplist

在前面的一篇文章【Redis源码剖析】 - Redis内置数据结构之双向链表中,我们介绍了Redis封装的一种“传统”双向链表list,分别使用prev、next指针来指向当前节点的前一个节点和下一个节点。这种数据结构需要花费额外的空间存储两个指针,空间利用率不高。比如,考虑比较极端的情况,如果每个节点保存的只是一个char类型的字符,在32位机上每个节点需要占用9个字节,而其中只有1个字节用来存

2017-08-29 18:43:41 517

转载 【Redis源码剖析】 - Redis内置数据结构之字典dict

今天我们来讲讲Redis中的哈希表。哈希表在C++中对应的是map数据结构,但在redis中称作dict(字典)。Redis只是用了几个简单的结构体和几种常见的哈希算法就实现了一个简单的类似高级语言中的map结构。下面我们来具体分析一下dict的实现。在学习数据结构的时候,我们接触过一种称作“散列表”的结构,可以根据关键字而直接访问记录。说的具体一点就是通过把key值映射到表中的一个位置来

2017-08-29 10:14:40 391

转载 【Redis源码剖析】 - Redis内置数据结构之双向链表list

今天我们主要讲述Redis中双向链表的实现,源代码主要在adlist.h和adlist.c文件。学习过《数据结构》的童鞋应该不会对双向链表感到陌生,这是一种比较简单的数据结构。与我们以前接触到的“常规”的链表结构相比,Redis中的双向链表主要有以下两点不同:1、双向列表list的节点结构双向链表作为一个容器,必然需要支持不同类型数据的存储。由于C++中有“模板”的概念,这一点在C++

2017-08-29 09:47:55 501

转载 【Redis源码剖析】 - Redis内置数据结构之字符串sds

1、在C语言中,字符串是以字符数组的形式体现的(以’\0’为结束符),redis中的字符串定义如下:/* 字符串结构体(字符串就是字符数组) */struct sdshdr { // 字符串当前长度 unsigned int len; // 剩余可用长度 unsigned int free; // 字符数组(具体存放字符串的地方) char b

2017-08-29 09:27:38 566

原创 Redis-事务

Redis通过MULTI、EXEC、WATCH等命令来实现事务(transaction)功能。本章从事务常见的ACID性质对事务的原子性,一致性,可理性和持久性进行说明一、事务的实现一个事务从开始到结束通常会经历以下三个阶段:1)事务开始2)命令入队3)事务执行事务开始:MULTI命令可以讲执行该命令的客户端从事务状态切换至事务状态,通过在客户端状态的flags

2017-08-29 09:00:05 329

原创 Redis-数据结构-对象

在前面陆续介绍了Redis用到的所有数据,比如简单字符串SDS,双端链表 ,字典,压缩列表,整数集合等等,Redis并没有直接用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象,哈希对象,集合对象和有序集合对象五种类型的对象。

2017-08-28 23:12:32 326

原创 windows xshell 跳板机登陆

1- 设置跳板机2E60089C-923A-4888-BE53-CEB13E46E869.png2- 设置用户身份验证,秘钥验证A71075EB-A59C-4F73-A095-C4B8C502B395.png3.设置登录后跳转3A3D6531-10EF-4C8A-86EF-ACAC4267A106.png4.设置跳板机代理08C06592

2017-08-28 09:02:49 1619

原创 Redis-数据结构-压缩列表-ziplist

压缩列表是列表键和哈西键的底层实现之一,当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。压缩列表是Redis为了节约内存而开发的,是一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点,每个节点可以保存一个字节数组或者一个整数值。ziplist的构成

2017-08-28 08:43:12 481

原创 Redis-数据结构-整数集合-intset

整数集合是Redis用于保存整数值的集合抽象数据结构,可以保存类型为int16_t,int32_t或者int64_t的整数值,并且保证集合中不会出现重复元素。typedef struct intset { //编码方式 unit32_t encoding; //集合包含的元素数量 unit32_t length; //保存

2017-08-27 20:56:42 277

原创 Redis-数据结构-跳跃表-skiplist

跳跃表(skiplist)是一种有序数结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis就会使用跳跃表来为有序集合键的底层实现。和链表、字典等数据结构被广泛的应用在Redis内部不同,Redis只在两个地方用到了跳跃表

2017-08-27 13:22:00 412

原创 Redis-数据结构-字典

字典在Redis中的应用相当广泛,比如Redis的数据库就是使用字典来作为底层实现的,对数据库的增删改查操作也是构建在字典的操作之上的。Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。1、哈希表dict.h/dicthttypedef struct dictht { //哈希表数组

2017-08-27 12:43:43 343

原创 Redis-数据结构-链表-adlist.h/listNode

每个链表接点使用一个adlist.h/listNode结构表示:typedef struce listNode { //前置节点 struct listNode *prev; //后置节点 struct listNode *next; //节点的值 void *value; }listNode;多个listN

2017-08-27 00:24:06 370

原创 Redis-数据结构-简单字符串-SDS

Redis没有直接用C余艳传统的字符串(以空字符结尾的字符数组),而是自己构建了一种名为简单动态字符串(SDS)抽象类型,作为Redis的默认字符串表示。SDS结构:struct sdshdr //记录buf数组中已使用的数量 //等于SDS所保存字符串的长度 int len; //记录buf数组中未使用字节的数量 in

2017-08-27 00:00:46 281

原创 Redis应用场景

NoSQL主要用于解决以下几种问题  1.少量数据存储,高速读写访问。此类产品通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景。  2.海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。  3.这方面最具代表性的是dynamo和bigtable 2篇论文所阐述的思路。前者是一个完全无中心

2017-08-26 22:57:07 3904

转载 NoSql数据库探讨

现在Nosql应用的越来越多,但为什么要用NoSql呢?什么情况下用Nosql呢?随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题:1、对数据库高并发读写的需求     

2017-08-26 22:03:47 667

Tab切换形势大全及FragmentPagerAdapter保存刷新数据实现

5种Tab实现总结,FragmentPagerAdapter数据保存完美解决

2016-01-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除