一. 概述
Redis 是一个开源 (BSD 许可) 的, 内存中的数据结构存储系统, 它可以用作数据库, 缓存和消息中间件. 它支持多种类型的数据结构, 如 字符串 (strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. Redis 内置了 复制(replication),LUA 脚本(Lua scripting), LRU 驱动事件(LRU eviction), 事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis 哨兵(Sentinel) 和自动 分区 (Cluster) 提供高可用性(high availability).
Redis 是用 ANSI C 编写的, 适用于大多数 POSIX 系统, 如 Linux,* BSD,OS X, 没有外部依赖性. Linux 和 OS X 是 Redis 开发和测试的两个操作系统, 我们建议使用 Linux 进行部署. Redis 可能在 Solaris 衍生系统 (如 SmartOS) 中工作, 但支持是最好的努力. Windows 版本没有官方支持, 但 Microsoft 开发并维护了 Redis 的 Win-64 端口.
二. Redis 优势
1. 性能极高 - Redis 能读的速度是 110000 次 / s, 写的速度是 81000 次 / s .
2. 丰富的数据类型 - Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作.
3. 原子 - Redis 的所有操作都是原子性的, 同时 Redis 还支持对几个操作全并后的原子性执行.
4. 丰富的特性 - Redis 还支持 publish/subscribe, 通知, key 过期等等特性.
三. Redis 的主要知识点
在后继学习 Redis 数据库时, 先了解主要的知识点, 后面学习时, 下面的知识点序号不分先后, 往后再补上其它知识点, 以最简短的文字概括描述.
1. 数据结构与对象 data structures
Redis 数据库里面的每个键值对 (key-value pair) 都是由对象 (object) 组成的, 其中数据库键总是一个字符串对象(string object). 而数据库键的值可以是字符串对象, 列表对象(list object), 哈希对象(hash object) 也叫散列, 集合对象(set object), 有序集合对象(stoted set object) 五种以及 3.0 版本之上的其它结构对象.
2. 复制 Replication
在 Redis 复制的基础上, 使用和配置主从复制非常简单, 能使得从 Redis 服务器 (下文称 slave) 能精确得复制主 Redis 服务器 (下文称 master) 的内容. 每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上, 并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本.
3. 持久化 disk persistence
Redis 提供了不同级别的持久化方式包括: 讲述 RDB 持久化和 AOF 持久化.(1) RDB 持久化方式能够在指定的时间间隔能对你的数据进行快照存储. (2) AOF 持久化方式记录每次对服务器写的操作, 当服务器重启的时候会重新执行这些命令来恢复原始的数据, AOF 命令以 Redis 协议追加保存每次写的操作到文件末尾. Redis 还能对 AOF 文件进行后台重写, 使得 AOF 文件的体积不至于过大.
4. LUA 脚本
Redis 从 2.6.0 版本开始对 Lua 脚本的支持, 通过在服务器中嵌入 Lua 环境, Redis 客户端可以使用 Lua 脚本. 命令包括: EVAL 和 EVALSHA, 可以对 Lua 脚本进行求值.
5. 驱动事件 LRU eviction
Redis 服务器是一个事件驱动程序, 服务器需要处理两类事件包括: 文件事件和时间事件. 当 Redis 被当做缓存来使用, 当你新增数据时, 让它自动地回收旧数据是件很方便的事情. 这个行为在开发者社区非常有名, 因为它是流行的 Memcached 系统的默认行为.
6. 事务 transcation
Redis 通过 MULTI ,EXEC ,DISCARD 和 WATCH 等命令来实现事务功能, 事务提供了一种将多个命令请求打包, 然后一次性, 按顺序的执行多个命令的机制, 并且在事务执行期间, 服务器不会中断事务而改去执行其它客户端的命令请求, 它会将事务中的所有命令都执行完毕, 然后才去处理其它客户端的命令请求.
7. 哨兵 Sentinel
Sentinel 是 Redis 高可用的解决方案, 由一个或多个 Sentinel 实例 (instance) 组成的 Sentinel 系统(system) 可以监视任意多个主服务器, 以及这些主服务器下的所有从服务器. 该系统执行以下三个任务包括: 监控, 提醒, 自动故障迁移.
8. 集群 Cluster
Redis 集群是 Redis 提供分布式数据库方案, 集群通过分片 (sharding) 来进行数据共享, 并提供复制和故障转移功能.
9. 发布与订阅
Redis 的发布与订阅功能由 SUBSCRIBE,PUBLISH, psubscribe 等命令组成, 通过执行 SUBSCRIBE 命令, 客户端可以订阅一个或多个频道, 从而成为这些频道的订阅者 (subscriber). 每当有其它客户端向被订阅的频道发送消息(message) 时, 频道的所有订阅者都会收到这条消息.
来源: https://www.cnblogs.com/MrHSR/p/9876891.html