被面试官怼:不会用Redis? 看完让你怼到他怀疑人生

1,292 阅读2分钟

前言

Redis是我在大约3年前为了解决一个实际问题而创造出来的:简单来说,当时我在尝试做一件使用硬盘存储关系数据库( on-disk SQL database )无法完成的事情——在一+台我能够支付得起的小虚拟机上面处理大量写入负载。

我要解决的问题在概念上并不复杂:多个网站会通过- -个小型的JavaScript 追踪器( tracker )连续不断地向我的服务器发送页面访问记录(pageview),而我的服务器需要为每个网站保存一定数量的最新页面访问记录,并通过网页将这些记录实时地展示给用户观看。

在最大负载达到每秒数千条页面记录的情况下,无论我使用什么样的数据库模式( schema ),无论我如何进行优化,我所使用的关系数据库都没办法在这个小虚拟机上处理如此大的负载。因为囊中羞涩,我没办法对虚拟机进行升级,并且我觉得应该有更简单的方法来处理-个由推人值组成的列表。最终,我决定自己写一个实验性质的内存数据库原型( prototype),这个数据库使用列表作为基本数据类型,并且能够对列表的两端执行常数时间复杂度的弹出(pop)和推入( push)操作。长话短说吧,这个内存数据库的想法的确奏效了,于是我用C语言重写了最初的数据库原型,并给它加上了基于子进程实现的持久化特性,Redis 就这样诞生了。

Redis

本书深人浅出地介绍了Redis 的5种数据类型,并通过多个实用示例展示了Redis的用法。除此之外,书中还讲述了Redis 的优化方法以及扩展方法,是一本对于学习和使用Redis来说不可多得的参考书籍。

本书一共由三个部分组成。

第一部分对Redis 进行了介绍,说明了Redis的基本使用方法、它拥有的5种数据结构以及操作这5种数据结构的命令,并讲解了如何使用Redis去构建文章聚合网站、cookie.购物车、网页缓存、数据库行缓存等一系列程序。

第二部分对Redis命令进行了更详细的介绍,并展示了如何使用Redis去构建更为复杂的辅助工具和应用程序,并在最后展示了如何使用Redis去构建一个简单的社交网站。

第三部分对Redis用户经常会遇到的一些问题进行了介绍,讲解了降低Redis内存占用的方法、扩展Redis性能的方法以及使用Lua语言进行脚本编程的方法。