Redis(Remote Dictionary Server,远程字典服务器)简介

1.1 Redis是什么?

      Redis是一个远程内存数据库,它不经性能强劲,而且还具有赋值特性以及为解决问题而生的独一无二的数据类型。在Redis中一同有五种不同的数据类型,各种问题都可以很自然的映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而我们以前所使用的数据库可能会要求我们扭曲问题来适应数据库,所以Redis使用起来也更加简单、方便。
      在Redis中我们可以通过复制、持久化和客户端分片等特性将Redis扩展成一个能够包括数百GB数据、每秒处理上百万次请求的系统,可见Redis具有高可用性、高并发性以及高可扩展性等特点

  • Redis

1.2 为什么要使用Redis?

      现在是一个信息爆炸的时代,如今各种信息都以指数爆炸的形势进行增长,我们原始的程序架构模型就已经扛不住这样大的数据吞吐、用户并发量。因为随着数据的不断增长以及时代的不断进步导致数据库的表与表列与列之间的关系不断的变复杂,使得我们查询数据的时候相当的慢,所以这个是候就需要一个解决方案来解决这样一个问题。

  • 传统的软件架构模型
    传统的软件架构模型

      针对以上问题Redis横空出世,Redis一经出世可以说就抢占了缓存技术方面的半壁江山,甚至都能够在一定程度上取代关系型数据库。Redis的读写性能相当的高,据官方测试读取的速度大概为8W/S,写的速度为5W/S,并且Redis还具有持久性的特性。使用Redis在一定程度上会使得程序的性能提升很多很多倍。

1.3 Redis与其他软件之间的对比

      Redis是不需要表的,他的数据库也不会预定义或者强制要求用户对Redis存储的不同数据进行关联,而关系型数据库则需要建立各种表间关系来保证数据的完整性。

      Redis与高性能键值缓存服务器memcached比较的话:两者都可用于存储键值映射,彼此之间的性能相差无几,但是Redis能够自动已两种不同的方式将数据写入硬盘,并且Redis除了能够存储普通字符串键之外,还可以存储其他4种不同的数据结构,而memcached则只能存储普通的字符串键。所以Redis既可以用作主数据库,又可以作为其他存储系统的辅助数据库

  • 一些数据库和缓存服务器的特性与功能
名称 类型 数据存储选项 查询类型 附加功能
Redis 使用内存存储(in-memory)的非关系型数据库 字符串、列表、集合、散列表、有序集合 每种数据类型都有自己专属的命令,另外还有批量操作(bulk operation)和不完全(partial)的事务支持 发布与订阅,主从复制(master/slave replication),持久化,脚本(存储过程,stored procedure)
memcached 使用内存存储的键值缓存 键值之间的关系 创建命令、读取命令、更新命令、删除命令以及其他几个命令 为提升性能而设计的多线程服务器
MySQL 关系型数据库 每个数据库可以包含多个表,每个表可以包含多个行;可以处理多个表的视图(view);支持空间(spatial)和第三方扩展 SELECT、INSERT、UPDATE、DELETE、函数、存储过程 支持ACID性质(原子性、一致性、隔离性、持久性,需要使用InnoDB数据库引擎才支持),主从复制和主主复制(master/master replication)
PostgreSQL 关系型数据库 每个数据库可以包含多个表,每个表可以包含多个行;可以处理多个表的视图;支持空间和第三方扩展;支持可定制类型 SELECT、INSERT、DELETE、UPDATE、内置函数、自定义的存储过程 支持ACID性质,主从复制,由第三方支持的多主赋值(multi-master/master replication)
MongoDB 使用硬盘存储(on-disk)的非关系文档存储 每个数据库可以包含多个表,每个表可以包含多个无schema(schema-less)的BSON文档 创建命令、读取命令、更新命令、删除命令、条件查询命令等 支持map-reduce操作,主从复制,分片,空间索引(spatial index)

1.4 Redis的附加特性

      Redis拥有两种不同形式的持久化方法,它们都可以用小而紧凑的格式将存储在内存中的数据写入硬盘中:第一种持久化方法为时间点转储(point-in-time dump),转储操作既可以在“指定时间内有指定的写操作执行”这一条件被满足时执行,有可以额通过调用两条转储到硬盘(dump-to-disk)命令中的任何一条来执行;第二种持久化方法将所有修改了数据库的命令都写入一个只追加(append-only)文件里面,用户可以根据数据的重要程度,将只追加写入设置为不同步(sync)、每秒同步一次或者每写入一个命令就同步一次。

      此外,尽管Redis的性能很好,但受限于Redis的内存存储设计,有时候只使用一台Redis服务器可能没有办法处理所有请求。因此,为了扩展Redis的读性能,并为Redis提供故障转移(failover)支持,Redis实现了主从复制特性:执行主从复制的从服务器会连接上主服务器,接收主服务器发送的整个数据库的初始副本(copy);之后主服务器执行的写命令,都会发送给所有连接的从服务器去执行,从而实时的更新从服务器的数据集。因为从服务器包含的数据会不断的进行更新,所以客户端可以向任意一个从从服务器发送读请求,以此来避免对主服务器进行集中式访问。

  • 使用Redis后的软件架构模型

使用了Redis后的一个大概架构模型

发布了56 篇原创文章 · 获赞 17 · 访问量 6213

猜你喜欢

转载自blog.csdn.net/qq_43199016/article/details/102005766