404 Not Found

Personal Notes


  • 首页

  • 归档

  • 标签

  • 搜索

Redis 持久化

发表于 Jun 29 2019

Redis 是内存数据库,数据都存储在内存中,如果没有持久化机制,一旦服务器进程退出数据就会丢失。所以 Redis 提供了两种持久化的机制:保存数据库中键值对的 RDB (Redis DataBase)和保存执行的写命令的 AOF(Append Only File)。

阅读全文 »

Redis 对象与数据库

发表于 Jun 23 2019

Redis 中有字符串、列表、哈希、集合和有序集合 5 种对象,每种对象都用到了至少一种之前介绍的数据结构。每个 Redis 对象都由一个 redisObject 结构表示,该结构中和保存数据有关的三个属性分别是 type、encoding 和 ptr。

// redis.h
typedef struct redisObject {

// 类型
unsigned type:4;

// 编码
unsigned encoding:4;

// 对象最后一次被访问的时间
unsigned lru:REDIS_LRU_BITS;

// 引用计数
int refcount;

// 指向实际值的指针
void *ptr;

} robj;

#define REDIS_LRU_BITS 24
阅读全文 »

Redis 数据结构

发表于 Jun 16 2019

最近又开始学习 Redis 的实现原理,配和《Redis 设计与实现》这本书和 Redis 源码梳理一下 Redis 的实现原理。

SDS

Redis 没有直接使用 C 语言传统的字符串表示(以空字符串结尾的字符数组,C 字符串),而是自己创建了一种名为简单动态字符串(Simple Dynamic String,SDS)的抽象类型,并将 SDS 用作 Redis 的默认字符串表示。

// sds.h
struct sdshdr {

// 记录 buf 数组中已使用字节的数量
// 等于 SDS 所保存字符串的长度
int len;

// 记录 buf 数组中未使用字节的数量
int free;

// 字节数组,用于保存字符串
char buf[];
};
阅读全文 »

JVM 运行时数据区

发表于 Jun 9 2019

这篇文章是阅读《深入理解 Java 虚拟机》第 2 章的笔记,文章内容大都摘自该书,也添加了一些自己的理解。Java 虚拟机在运行程序时会把它所管理的内存划分为若干个不同的数据区域,《Java 虚拟机规范(Java SE 8 版)》的 Run-Time Data Areas 章节给出了这几个区域的定义,但是虚拟机厂商可以有各自不同的实现。

图 1:JVM 运行时数据区
阅读全文 »

设计模式之装饰者模式(Decorator)

发表于 Jun 2 2019

《Head First 设计模式》中描述了一个场景:星巴兹(Starbuzz)咖啡店的咖啡种类(HouseBlend、DarkRoast、Decaf、Espresso 等)增长迅速,同时客户购买咖啡时,要求在其中加入各种调料,例如:蒸奶(Milk)、豆浆(Soy)、摩卡(Mocha)或覆盖奶泡(Whip),订单系统需要根据咖啡种类和所加入的调料收取不同的费用,需要设计一个支持这些功能的订单系统。

阅读全文 »

1234…9
wind4869

wind4869

44 日志
12 标签
GitHub E-Mail
© 2014 - 2020 wind4869
由 Hexo 强力驱动
主题 - NexT.Pisces
0%