下载APP 编程狮,随时随地学编程
返回 首页

Redis 设计与实现(第二版)

开始阅读
手册说明:

Redis简介

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

Redis特点

  • Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。
  • 与其它键值数据存储相比,Redis有一组相对丰富的数据类型。
  • Redis可以将数据复制到任意数量的从机中。

Redis支持的语言

Redis支持的语言有很多,包括:

Redis版本发布

  • 2012年08月02日,Redis 2.4.16 小更新版本 NoSQL。 
  • 2012年08月31日 ,Redis 2.4.17 小更新版本 NoSQL。 
  • 2012年11月7日 Redis 2.6.3 发布,高性能K/V服务器。 
  • 2013年4月30日Redis 2.6.13 发布,高性能K/V服务器。 
  • 2013年11月25日,Redis 2.8.1发布。 
  • 2015年2月,Redis3.0.0发布。 

相关教程资料


目录
Redis介绍
Redis 前言
致谢
Redis简介

第一部分:数据结构与对象

Redis简单动态字符串

SDS 的定义
SDS 与 C 字符串的区别
SDS API
Redis 重点回顾
Redis 参考资料

链表

Redis 链表和链表节点的实现
Redis 链表和链表节点的 API
Redis 重点回顾

字典

Redis 字典的实现
Redis 哈希算法
Redis 解决键冲突
Redis rehash
Redis 渐进式 rehash
Redis 字典 API
Redis 重点回顾

跳跃表

Redis 跳跃表的实现
Redis 跳跃表 API
Redis 重点回顾

整数集合

Redis 整数集合的实现
Redis 升级
Redis 升级的好处
Redis 降级
Redis 整数集合 API
Redis 重点回顾

压缩列表

Redis 压缩列表的构成
Redis 压缩列表节点的构成
Redis 连锁更新
Redis 压缩列表 API
Redis 重点回顾

对象

Redis 对象的类型与编码
Redis 字符串对象
Redis 列表对象
Redis 哈希对象
Redis 集合对象
Redis 有序集合对象
Redis 类型检查与命令多态
Redis 内存回收
Redis 对象共享
Redis 对象的空转时长
Redis 重点回顾

第二部分:单机数据库的实现

数据库

Redis 数据库键空间
Redis 重点回顾

RDB 持久化

Redis RDB文件结构
Redis 重点回顾

AOF 持久化

Redis AOF持久化的实现
Redis 重点回顾

事件

Redis 文件事件
Redis 重点回顾
Redis 参考资料

客户端

Redis 客户端属性
Redis 重点回顾

服务器

Redis 命令请求的执行过程
Redis 重点回顾

第三部分:多机数据库的实现

复制

Redis 旧版复制功能的实现
Redis 重点回顾

Sentinel

Redis 启动并初始化 Sentinel
Redis 重点回顾
Redis 参考资料

集群

Redis 节点
Redis 重点回顾

第四部分:独立功能的实现

发布与订阅

Redis 频道的订阅与退订
Redis 重点回顾
Redis 参考资料

事务

Redis 事务的实现
Redis 重点回顾

Lua 脚本

Redis 创建并修改 Lua 环境
Redis 重点回顾

排序

Redis SORT <key> 命令的实现
Redis 重点回顾

二进制位数组

Redis GETBIT命令的实现
Redis 重点回顾

慢查询日志

Redis 慢查询记录的保存
Redis 慢查询日志的阅览和删除
Redis 添加新日志
Redis 重点回顾

监视器

Redis 成为监视器
Redis 向监视器发送命令信息
Redis 重点回顾
Redis 源码、相关资源和勘误

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }