Redis 是一种基于 键值对的 NoSQL 数据库。与很多键值对数据库不同,Redis 提供了丰富的 值数据存储结构,包括string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、bitmap(位图)等等。

正文
Redis 是一个使用 ANSI C 编写的开源、支持 网络、基于 内存、单线程模型、可选持久性 的 键值对存储数据库。
1. Redis的特性
-
速度快,最快可达到
10w QPS(基于 内存,C语言,单线程 架构); -
基于 键值对 (
key/value) 的数据结构服务器。全称Remote Dictionary Server。包括string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、bitmap(位图)。同时在 字符串 的基础上演变出 位图(BitMaps)和HyperLogLog两种数据结构。3.2版本中加入GEO(地理信息位置)。 -
丰富的功能。例如:键过期(缓存),发布订阅(消息队列),
Lua脚本(自己实现Redis命令),事务,流水线(Pipeline,用于减少网络开销)。 -
简单稳定。无外部库依赖,单线程模型。
-
客户端语言多。
-
持久化(支持两种 持久化 方式
RDB和AOF)。 -
主从复制(分布式的基础)。
-
高可用(
Redis Sentinel),分布式(Redis Cluster)和 水平扩容。
2. Redis的应用场景
2.1. 缓存
合理的使用 缓存 能够明显加快访问的速度,同时降低数据源的压力。这也是 Redis 最常用的功能。Redis 提供了 键值过期时间(EXPIRE key seconds)设置,并且也提供了灵活控制 最大内存和 内存溢出 后的 淘汰策略。
2.2. 排行榜
每个网站都有自己的排行榜,例如按照 热度排名 的排行榜,发布时间 的排行榜,答题排行榜等等。Redis 提供了 列表(list)和 有序集合(zset)数据结构,合理的使用这些数据结构,可以很方便的构建各种排行榜系统。
2.3. 计数器
计数器 在网站应用中非常重要。例如:点赞数加 1,浏览数 加 1。还有常用的 限流操作,限制每个用户每秒 访问系统的次数等等。Redis 支持 计数功能(INCR key),而且计数的 性能也非常好,计数的同时也可以设置 超时时间,这样就可以 实现限流。
2.4. 社交网络
赞/踩,粉丝,共同好友/喜好,推送,下拉刷新等是社交网站必备的功能。由于社交网站 访问量通常比较大,而且 传统的数据库不太适合保存这类数据,Redis提供的 数据结构 可以相对比较容易实现这些功能。
2.5. 消息队列
Redis 提供的 发布订阅(PUB/SUB)和 阻塞队列 的功能,虽然和专业的消息队列比,还 不够强大,但对于一般的消息队列功能基本满足。
3. Redis的安装配置
下面介绍一下 Redis 的安装流程。我会按照如下的顺序,逐步搭建出 高可用 的 Redis 缓存服务器集群。
Redis单机服务器 搭建Redis主从复制 搭建Redis-Sentinel高可用 搭建
3.1. Redis单机服务器安装
3.1.1. 下载并解压
首先从 Redis 官网下载 Redis 源代码并解压,这里使用的是 最新稳定版本 4.0.11。依次执行如下命令:
cd /usr/local/wget http://download.redis.io/releases/redis-4.0.11.tar.gztar -zxvf redis-4.0.2.tar.gz

