Redis 是一个开源的内存数据结构存储器,经常被用作数据库、缓存以及消息代理等用途。Redis 因为有丰富的数据结构、极快的速度、齐全的功能而广为人知,它是目前内存数据库方面的事实标准,在互联网上有非常广泛的应用,包括微博、Twitter、GitHub、Stack Overflow、知乎等国内外公司都大量地使用了 Redis 。
Redis 之所以广受开发者欢迎,跟自身拥有强大的功能以及简洁的设计不无关系。Redis 拥有各式各样的特点和优点,其中最重要的是以下这些:
丰富多样的数据结构—— Redis 为用户提供了字符串、散列、列表、集合、有序集合、HyperLogLog、位图、流、地理坐标等一系列丰富的数据结构,每种数据结构都适用于解决特定的问题。在有需要的时候,用户还可以通过事务、Lua 脚本、模块等特性,扩展已有数据结构的功能,甚至从零实现自己专属的数据结构。通过这些数据结构和特性, Redis 可以保证,用户总是可以使用最适合的工具去解决手头上的问题。
完备的功能——在上述这些数据结构的基础上, Redis 提供了很多非常有用和实用的附加功能,比如自动过期、流水线、事务、数据持久化等,这些功能能够帮助用户将Redis 应用在更多不同的场景中,或者给予用户以方便。更重要的是, Redis 不仅可以单机使用,还可以多机使用:通过Redis 自带的复制、Sentinel 和集群功能,用户可以将自己的数据库扩展至任意大小。无论你运营的是一个小型的个人网站,还是一个为上千万消费者服务的热门站点,你都可以在Redis 找到你想要的功能,并将其部署到你的服务器里面。
风驰电掣般的执行速度—— Redis 是一款内存数据库,它将所有数据都储存在内存里面。因为计算机访问内存的速度要远远高于访问硬盘的速度,因此与基于硬盘设计的传统数据库相比, Redis 在数据的存取速度方面具有天然的优势。虽然说“背靠大树好乘凉”,但Redis 并没有因为自己拥有天然的速度优势就放弃了自己在效率方面的追求。与此相反, Redis 的开发者在实现各项数据结构和特性的时候都经过了大量考量,在底层选用了很多非常高效的数据结构和算法,以此来确保每个操作都可以在尽可能短的时间内完成,并且尽可能地节省内存。
对用户友好的API、文档以及社区—— “虽然 Redis 提供了很多很棒的数据结构和特性,但如果它们使用起来非常困难的话,那么这一切就没有意义。” ——如果你对此有所担心的话,那么现在可以打消你的疑虑了! Redis API 遵循的是 UNIX “一次只做一件事,并把它做好”的设计哲学, Redis 的 API 虽然丰富,但它们大部分都非常简短,并且只需接受几个参数就可以完成用户指定的操作。更棒的是, Redis 在官方网站(redis.io)上为每个 API 以及相关特性都提供了详尽的文档,并且客户端本身也可以在线查询这些文档。当你遇到文档无法解决的问题时,还可以在Redis 项目的 GitHub 页面(github.com/antirez/redis)、 Google Group(groups.google.com/forum/#!forum/redis-db)甚至作者的 Twitter(twitter.com/antirez) 上提问。
广泛的支持——正如之前所说, Redis 已经得到了互联网公司的广泛使用,许多开发者为不同的编程语言开发了相应的客户端(redis.io/clients),绝大多数编程语言的使用者都可以轻而易举地找到他们所需的客户端,然后直接开始使用Redis 。此外,包括亚马逊、谷歌、RedisLabs、阿里云和腾讯云在内的多个云服务提供商都提供了基于 Redis 或兼容 Redis 的服务,如果你不打算自己搭建Redis 服务器,那么上述的这些提供商可能是一个不错的选择。
◆ 作者简介 ◆
黄健宏 2011年开始接触Redis,之后一直在持续地学习和研究Redis源码,并通过写书、翻译、讲授课程等方式分享Redis知识。他是《Redis设计与实现》的作者,《Redis实战》的译者,并且长期翻译和维护着在线的中文Redis文档《Redis命令参考》。他的个人网站是huangz.me。
《Redis使用手册》已经正式出版。京东地址 https://item.jd.com/12716266.html