Redis
Redis
Redis 基础
Redis 概述
Redis 是一种基于键值对的 NoSQL 数据库,它提供了对多种数据类型(字符串、哈希、列表、集合、有序集合、位图等)的支持,能够满足很多应用场景的需求。Redis 将数据放在内存中,因此读写性能是非常惊人的。与此同时,Redis 也提供了持久化机制,能够将内存中的数据保存到硬盘上,在发生意外状况时数据也不会丢掉。此外,Redis 还支持键过期、地理信息运算、发布订阅、事务、管道、Lua 脚本扩展等功能,总而言之,Redis 的功能和性能都非常强大,如果项目中要实现高速缓存和消息队列这样的服务,直接交给 Redis 就可以了。目前,国内外很多著名的企业和商业项目都使用了 Redis,包括:Twitter、Github、StackOverflow、新浪微博、百度、优酷土豆、美团、小米、唯品会等。
Redis 简介
2008 年,一个名为 Salvatore Sanfilippo 的程序员为他开发的 LLOOGG 项目定制了专属的数据库(因为之前他无论怎样优化 MySQL,系统性能已经无法再提升了),这项工作的成果就是 Redis 的初始版本。后来他将 Redis 的代码放到了全球最大的代码托管平台 Github,从那以后,Redis 引发了大量开发者的好评和关注,继而有数百人参与了 Redis 的开发和维护,这使得 Redis 的功能越来越强大和性能越来越好。
Redis 是 REmote DIctionary Server 的缩写,它是一个用 ANSI C 编写的高性能的 key-value 存储系统,与其他的 key-value 存储系统相比,Redis 有以下一些特点(也是优点):
- Redis 的读写性能极高,并且有丰富的特性(发布/订阅、事务、通知等)。
- Redis 支持数据的持久化(RDB 和 AOF 两种方式),可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis 支持多种数据类型,包括:string、hash、list、set,zset、bitmap、hyperloglog 等。
- Redis 支持主从复制(实现读写分析)以及哨兵模式(监控 master 是否宕机并自动调整配置)。
- Redis 支持分布式集群,可以很容易的通过水平扩展来提升系统的整体性能。
- Redis 基于 TCP 提供的可靠传输服务进行通信,很多编程语言都提供了 Redis 客户端支持。
Redis 的应用场景
- 高速缓存 - 将不常变化但又经常被访问的热点数据放到 Redis 数据库中,可以大大降低关系型数据库的压力,从而提升系统的响应性能。
- 排行榜 - 很多网站都有排行榜功能,利用 Redis 中的列表和有序集合可以非常方便的构造各种排行榜系统。
- 商品秒杀/投票点赞 - Redis 提供了对计数操作的支持,网站上常见的秒杀、点赞等功能都可以利用 Redis 的计数器通过 +1 或 -1 的操作来实现,从而避免了使用关系型数据的
update
操作。 - 分布式锁 - 利用 Redis 可以跨多台服务器实现分布式锁(类似于线程锁,但是能够被多台机器上的多个线程或进程共享)的功能,用于实现一个阻塞式操作。
- 消息队列 - 消息队列和高速缓存一样,是一个大型网站不可缺少的基础服务,可以实现业务解耦和非实时业务削峰等特性。
Redis 的安装和配置
本文由作者按照 CC BY 4.0 进行授权