之前空非易博客谈过 Redis 的诞生,世界上有无数种数据库,我们为什么要选择使用 Redis 呢?它有什么好处和优点?本文将讨论这个话题。

独特的键值对模型

很多数据库只能处理一种数据结构:

  • SQL 数据库 —— 表格
  • Memcached —— 键值对,键和值都是字符串
  • 文档数据库(CouchDB、MongoDB)—— 由 JSON/BSON 组成的文档

而一旦数据提供的数据结构不适合去做某件事的话,程序写起来就会非常地麻烦和不自然。

Redis-andvar.jpg

Redis 也是键值对数据库,但和 Memcached 不同的是,Redis 的值不仅可以是字符串,它还可以是其他五种数据结构中的任意一种。通过选用不同的数据结构(如上图),用户可以使用 Redis 解决各式各样的问题。随着 Redis 的发展,将来它将支持更多类型的数据结构,成为更大的平台。

内存储存,速度极快

按存储方式,数据库的工作模式,分为硬盘数据库和内存数据库。Redis 将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。

hard-disk-db.jpg

memory-db.jpg

丰富的附加功能

  • 持久化:将储存在内存里面的数据保存到硬盘里面,保障数据安全,方便进行数据备份和恢复。
  • 发布与订阅:将消息同时分发给多个客户端,可用于构建广播系统。
  • 过期键:为键设置一个过期时间,让它在指定的时间之后自动被删除。
  • 事务:原子地执行多个操作,并提供乐观锁功能,保证处理数据时的安全性。
  • 脚本:在服务器端原子地执行多个操作,完成复杂的功能,并减少客户端与服务器之间的的通信往返次数。
  • 复制:为指定的 Redis 服务器创建一个或多个复制品,用于提升数据安全性,并分担读请求的负担。
  • Sentinel:即 Redis 哨兵,监控 Redis 服务器的状态,并在服务器发生故障时,进行自动故障转移。
  • 集群:创建分布式数据库,每个服务器分别执行一个部分写操作和读操作。

完善的文档

Redis 具有完善、易读的文档,加上 Redis 本身功能的简单性,就算新手也可以轻松上手。

良好的支持

Redis 作者非常勤奋,在每个版本都会不断地增加有用的新功能。Bug 一旦出现就会很快被修复,齐全的测试套件以及稳扎稳打的开发策略,使得 Redis 非常健壮可靠。

有问题时,在 Redis 的论坛上发贴,或者到 Redis 的 Github 页面发 issue,又或者直接和作者 Antirez 联系,通常都可以很快得到回应。

Pivotal 公司雇用 Antirez 全力开发 Redis,这个公司也提供专门的 Redis 开发和维护咨询服务,无后顾之忧。阿里云、百度云、Amazon、RedisLab 等公司都提供了基于 Redis 的应用服务。

广泛的使用

  • Twitter 使用 Redis 储存用户时间线。
  • StackOverflow 使用Redis 进行缓存和消息分发。
  • Pinterest 使用 Redis 构建关注模型(follow model)和兴趣图谱(interest graph)。
  • Flickr 使用 Redis 构建队列。
  • Github 使用 Redis 作为持久化的键值对数据库,并使用其构建消息队列。
  • 新浪微博使用 Redis 实现计数器、反向索引、排行榜、消息队列和存储用户关系。
  • 知乎使用 Redis 进行计数、缓存、消息分发和任务调度

关于选择 Redis 的原因介绍完毕。

空非易文章均为原创,转载请以链接形式注明本文地址

本文地址:http://pengzhiyong.com/archives/Story-why-choose-to-use-Redis.html

作者:空非易 | 标签: | 浏览:2689