Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

Redis 简介


Redis 是业界主流的高性能的 key-value NoSQL 数据库,是一个使用 ANSI C 编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。它支持丰富的数据类型,如字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(ZSet)、地理位置(Geo)等。Redis 最初由意大利人 Salvatore Sanfilippo 编写,并于2009年4月10日发布初始版本。

Redis 特点

Redis 与其他 key-value 缓存产品有以下三个特点:

  1. Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;
  2. Redis 不仅仅支持简单的 string 类型的数据,同时还提供 list,set,zset,hash 等复杂数据结构的存储;
  3. Redis 支持数据的备份,即 master-slave 模式的数据备份;

Redis 发展历史

  • 2009年4月10日,Redis 初始版本发布。
  • 2013年5月之前,其开发由 VMware 赞助。
  • 2013年5月至2015年6月期间,其开发由 Pivotal 赞助。
  • 2015年4月1日,Redis 3.0.0 版本正式发布,最重要的特征是对 Redis 集群的支持(Redis Cluster)。
  • 2015年6月开始,Redis 的开发由 Redis Labs 赞助。
  • 2017年7月14日,Redis 4.0.0 版本正式发布,其中最大变化就是加入了模块系统。
  • 2018年10月17日,Redis 5.0 GA 正式版发布,其中比较大的变化是增加了新的流数据类型。

Redis 优势

支持语言

Redis 支持市面上绝大多数的主流语言,包括 Java、Python、C、C++、Go、Perl、PHP、Ruby、C# 等等。

丰富的数据类型

Redis 除了支持典型的 string(字符串)类型,还支持 list(列表)、hash(散列表)、sets(集合) 、sorted set(有序集合)、geo(地理位置)等。

持久化

Redis 将全部的数据存储在内存中。

目前通过两种方式实现持久化:

  1. 使用快照,一种“半持久化模式”。不时的将数据集以异步方式从内存以RDB格式写入硬盘;
  2. 1.1 版本开始使用更安全的 AOF 格式替代,把每一次数据变化都写入到一个 append only file(aof)里面,这种也称为“全持久化模式”。Redis能够在后台对只可追加的记录作修改来避免无限增长的日志;

同步

Redis 支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得 Redis 可执行单层树复制。从盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

性能

当数据依赖不再需要,Redis 这种基于内存的性质,与在执行一个事务时将每个变化都写入硬盘的数据库系统相比就显得执行效率非常高。写与读操作速度没有明显差别。

单台 Redis 的读写性能能达到10w+/s。

Redis 缺点

Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。