Redis是什么
Redis 全名为 Remote Dictionary Server(简称 RDNS),其作为基于内存实现的键值型非关系(NoSQL)数据库,在编译过程中采用了内存作为存储基础,并具备独特的键值型数据模型特性。该技术由意大利人 Salvatore Sanfilippo 开发,并采用C语言作为编程基础。
基于BSD协议实现的基础上,Redis实现了完全免费开源,其最新发布版本为6.20版,常见版本包括3.0版、4.0版和5.0版。从其诞生以来,Redis以其卓越的技术性能、完善的官方文档以及简洁易懂的源码获得了广泛的认可与使用,吸引了包括腾讯公司、阿里巴巴集团、推特公司以及GitHub等在内的众多大型互联网企业的青睐。

主流的内存型数据库体系中包括Redis之外的产品。除了Redis外还包括:由甲骨文公司开发运营的产品如Oracle Berkeley DB;由谷歌开发运营的轻量级内存在线查询系统如SQlite;Memcached公司的键值型分布式缓存系统;以及基于内存技术打造的高性能解决方案如Altibase。
相较于其他内存型数据库系统而言,Redis具备了独特的特性。
Redis不仅能够将所有数据存储在内存中,并且通过磁盘实现持久化存储;
Redis提供了丰富的数据类型选项,并支持诸如字符串(string)、列表(list)、集合(set)、有序集合(zset)、哈希表(hash)等基本类型;此外它因此被广泛称为‘数据结构服务器’。
Redis采用主从复制模式进行同步操作(master-slave模式),允许主节点将数据同步至任意数量的从节点上以保障系统的可靠性和安全性。
Redis支持多种编程语言开发接口,并提供C API/C++ API接口供开发者使用。
与 SQL 数据库截然不同的是,在 Redis 中并没有专门用于创建新数据库的功能,默认系统会预先初始化 16 个(0 到 15)的存储空间(其中默认开启的是 0 号存储空间)。在同一个存储空间内,每个 key 都是独一无二的、不允许重复使用的标识符。类似于一个独特的标识符,“密钥”的作用就是打开对应的“锁”。键值对存储的本质就是通过 key 来指定 value 的位置和内容,在需要查找 value 时,则必须提供与之匹配的 key 进行定位查询。
Redis 数据库没有"数据结构"这一概念,在实现存储需求时通过不同的数据类型来满足各种需求,在面对不同应用场景时能够提供灵活的解决方案以适应开发者的需求。 Redis 架构 Redis 体系架构主要分为两个部分:Redis 服务端与 Redis 客户端两大部分。
Redis 常用于缓存那些经常被访问的数据项或者需要大量资源进行处理的内容通过将其存储在 Redis 中可以显著提升应用程序的响应速度;以网站首页为例由于其频繁被访问且创建过程中会消耗较多资源因此将其内容缓存至 Redis 可以有效缓解网站压力降低页面加载时延
我们了解 databases 的存储模式主要分为两类:一类是基于磁盘存储系统(Disk-Based),另一类是基于内存存储系统(Memory-Based)。在磁盘存储系统中存在一些制约因素导致读写效率较低的问题:如机械臂运动延迟、操作系统开销等引起的低效运行。而 Redis 则采用了基于内存的方式来完成数据访问,在性能上相比磁盘系统则提升了一个数量级以上(Times)的距离。以下表格对比分析了 Redis 数据库与传统常用数据库在性能指标上的差异

Redis 以内存为基础来实现数据的存储方式,在实践当中这种模式能够显著提升运行效率。然而我们清楚地认识到计算机的内存资源是极为有限且宝贵的资产,在这种情况下Redis 并不适合用于存储规模较大的文件或者二进制数据类型的内容。为了防止出现数据无法正确加载的问题这一系统特别适合用于存储较小规模的文本信息。在设计时我们规定每个 key 和 value 的大小不应超过512 MB。
