第一章:初识Redis
常见DB对比表,由于未标明各个DB的版本,这个表格其实并不准确,特别是附加功能栏。
名称 | 类型 | 数据存储结构 | 查询类型 | 附加功能 |
Redis | 使用内存的非关系型数据库 | 字符串、列表、集合、有序集合、散列表 | 每种数据类型都有专属指令;批量操作;不完全的事务支持 | 发布与订阅;主从复制;持久化;脚本 |
memcached | 使用内存的键值对缓存 | 键值对 |
创建、读取、更新、删除及其他命令 |
多线程服务器 |
MySQL | 关系型数据库 | 数据库包含多个表,表包含多行记录;可以处理表的视图;支持空间与第三方扩展 | SELECT、INSERT、UPDATE、DELETE;内置函数;自定义存储过程 | 支持ACID;主从复制;主主复制 |
PostgreSQL | 关系型数据库 | 数据库包含多个表,表包含多行记录;可以处理表的视图;支持空间与第三方扩展;支持定制类型 | SELECT、INSERT、UPDATE、DELETE;内置函数;自定义存储过程 | 支持ACID;主从复制;多主复制 |
MongoDB | 使用硬盘的非关系型文档存储 | 数据库包含多个表,表包含无schema的BSON文档 | 创建、读取、更新、删除、条件查询及其他命令 | 支持Map-Reduce;主从复制;分片;空间索引 |
Map-Reduce(映射与归约):MapReduce是面向大数据并行处理的计算模型、框架和平台。
磁盘是如何存储数据的?
信息存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片。假设,你用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的地方被磁化,凹的地方是没有被磁化。因此硬盘可以以二进制来存储表示文字、图片等信息。
机械盘和固态盘的区别
机械盘:数据是存储的扇区的,读写是依靠磁头的摆动寻址的。顺序读写主要时间花费在了传输时间,随机读写因为内存碎片需要多次寻道和旋转延迟。
固态盘:是由控制单元和固态存储单元(DRAM或FLASH芯片)组成,存储单元负责存储数据,控制单元负责读取、写入数据。由于固态硬盘没有普通硬盘的机械结构,也不存在机械硬盘的寻道问题。
顺序读写和随机读写对比
随机读写是相对顺序读写而言的,所谓随机读写,是指可以在任何时候将存取文件的指针指向文件内容的任何位置。一般情况下SAS机械硬盘主要是看顺序读写性能,SSD固态盘主要看随机读写性能。
文件的操作方式
顺序读写:文件指针只能从头移动到尾。
随机读写:文件指针可以随意移动,根据需要。
特殊情况
多进程情况下的顺序读写,需要不断地切换磁头到不同的文件,其实也已经表现为随机写了。
第二章:使用Redis构建Web应用
Cookie类型 | 优点 | 缺点 |
签名 | 所有信息放Cookie,签名实现简单 | 容易忘记进行签名或者验证签名,从而造成安全漏洞 |
令牌 | 只存令牌,Cookie体积小 | 需要在服务器中存储更多的信息 |
第三章:Redis命令
已在《Redis设计与实现》中学习,跳过
第四章:数据安全与性能保障
已在《Redis设计与实现》中学习,跳过
第五章:使用Redis构建支持程序
– 使用Redis记录日志
– 使用Redis实现计数器并进行数据统计
– 查询IP地址所属的城市与国家
– 服务的发现与配置
第六章:使用Redis构建应用程序组件
– 构建两个前缀匹配自动补全程序
– 通过构建分布式锁来提高性能
– 通过开发计数信号量来控制并发
– 构建两个不同用途的任务队列
– 通过消息拉取系统来实现延迟消息传递
– 学习如何进行文件分发
第七章:基于搜索的应用程序
偏业务,跳过
第八章:构建简单的社交网站
偏业务,跳过
第九章:降低内存占用
– 短结构
– 分片结构
– 打包存储二进制和字节
第十章:扩展Redis
– 扩展读性能
– 扩展写性能和内存容量
– 扩展复杂的查询
第十一章:Redis的Lua脚本编程
– 在不编写C代码的清空下添加新功能
– 使用Lua重写锁和信号量
– 移除WATCH/MULTI/EXEC事务
– 使用Lua对列表进行分片