Redis 是内存数据库,数据都存储在内存中,如果没有持久化机制,一旦服务器进程退出数据就会丢失。所以 Redis 提供了两种持久化的机制:保存数据库中键值对的 RDB (Redis DataBase)和保存执行的写命令的 AOF(Append Only File)。
Redis 对象与数据库
发表于
Redis 中有字符串、列表、哈希、集合和有序集合 5 种对象,每种对象都用到了至少一种之前介绍的数据结构。每个 Redis 对象都由一个 redisObject 结构表示,该结构中和保存数据有关的三个属性分别是 type、encoding 和 ptr。
// redis.h |
Redis 数据结构
发表于
最近又开始学习 Redis 的实现原理,配和《Redis 设计与实现》这本书和 Redis 源码梳理一下 Redis 的实现原理。
SDS
Redis 没有直接使用 C 语言传统的字符串表示(以空字符串结尾的字符数组,C 字符串),而是自己创建了一种名为简单动态字符串(Simple Dynamic String,SDS)的抽象类型,并将 SDS 用作 Redis 的默认字符串表示。
// sds.h |
JVM 运行时数据区
发表于
这篇文章是阅读《深入理解 Java 虚拟机》第 2 章的笔记,文章内容大都摘自该书,也添加了一些自己的理解。Java 虚拟机在运行程序时会把它所管理的内存划分为若干个不同的数据区域,《Java 虚拟机规范(Java SE 8 版)》的 Run-Time Data Areas 章节给出了这几个区域的定义,但是虚拟机厂商可以有各自不同的实现。
设计模式之装饰者模式(Decorator)
发表于
《Head First 设计模式》中描述了一个场景:星巴兹(Starbuzz)咖啡店的咖啡种类(HouseBlend、DarkRoast、Decaf、Espresso 等)增长迅速,同时客户购买咖啡时,要求在其中加入各种调料,例如:蒸奶(Milk)、豆浆(Soy)、摩卡(Mocha)或覆盖奶泡(Whip),订单系统需要根据咖啡种类和所加入的调料收取不同的费用,需要设计一个支持这些功能的订单系统。