超全,超详细的Redis基础,你掌握了多少?

Redis 入门

Redis 诞生历程
从一个故事开始

08年的时候有一个意大利西西里岛的小伙子,笔名antirez(http://invece.org/),创建
了一个访客信息网站LLOOGG.COM。有的时候我们需要知道网站的访问情况,比如访
客的IP、操作系统、浏览器、使用的搜索关键词、所在地区、访问的网页地址等等。在
国内,有很多网站提供了这个功能,比如 CNZZ,百度统计,国外也有谷歌的 Google
Analytics。我们不用自己写代码去实现这个功能,只需要在全局的footer里面嵌入一段
JS 代码就行了,当页面被访问的时候,就会自动把访客的信息发送到这些网站统计的服
务器,然后我们登录后台就可以查看数据了。

LLOOGG.COM提供的就是这种功能,它可以查看最多10000条的最新浏览记录。这样的话,它需要为每一个网站创建一个列表(List),不同网站的访问记录进入到不同的列表。如果列表的长度超过了用户指定的长度,它需要把最早的记录删除(先进先出) 。
1
当LLOOGG.COM的用户越来越多的时候,它需要维护的列表数量也越来越多,这
种记录最新的请求和删除最早的请求的操作也越来越多。LLOOGG.COM最初使用的数
据库是MySQL,可想而知,因为每一次记录和删除都要读写磁盘,因为数据量和并发量
太大,在这种情况下无论怎么去优化数据库都不管用了。
考虑到最终限制数据库性能的瓶颈在于磁盘,所以antirez打算放弃磁盘,自己去实
现一个具有列表结构的数据库的原型,把数据放在内存而不是磁盘,这样可以大大地提
升列表的push和pop的效率。antirez发现这种思路确实能解决这个问题,所以用C语
言重写了这个内存数据库,并且加上了持久化的功能,09年,Redis横空出世了。从最
开始只支持列表的数据库,到现在支持多种数据类型,并且提供了一系列的高级特性,
Redis已经成为一个在全世界被广泛使用的开源项目。

为什么叫REDIS 呢?它的全称是REmote DIctionary Service,直接翻译过来是远
程字典服务。

从Redis的诞生历史我们看到了,在某些场景中,关系型数据库并不适合用来存储
我们的Web应用的数据。 那么,关系型数据库和非关系型数据库, 或者说SQL和NoSQL,
到底有什么不一样呢?

Redis 定位与特性
SQL 与 NoSQL

在绝大部分时候,我们都会首先考虑用关系型数据库来存储我们的数据,比如
SQLServer,Oracle,MySQL等等。

关系型数据库的特点:

1、它以表格的形式,基于行存储数据,是一个二维的模式。
2、它存储的是结构化的数据,数据存储有固定的模式(schema),数据需要适应
表结构。
3、表与表之间存在关联(Relationship)。
4、大部分关系型数据库都支持SQL(结构化查询语言)的操作,支持复杂的关联查
询。
5、通过支持事务(ACID酸)来提供严格或者实时的数据一致性。

但是使用关系型数据库也存在一些限制,比如:

1、要实现扩容的话,只能向上(垂直)扩展,比如磁盘限制了数据的存储,就要扩
大磁盘容量,通过堆硬件的方式,不支持动态的扩缩容。水平扩容需要复杂的技术来实
现,比如分库分表。
2、表结构修改困难,因此存储的数据格式也受到限制。
3、在高并发和高数据量的情况下,我们的关系型数据库通常会把数据持久化到磁盘,
基于磁盘的读写压力比较大。

为了规避关系型数据库的一系列问题,我们就有了非关系型的数据库,我们一般把
它叫做“non-relational”或者“Not Only SQL”。NoSQL最开始是不提供 SQL的数
据库的意思,但是后来意思慢慢地发生了变化。

非关系型数据库的特点:

1、存储非结构化的数据,比如文本、图片、音频、视频。
2、表与表之间没有关联,可扩展性强。
3、保证数据的最终一致性。遵循BASE(碱)理论。 BasicallyAvailable(基本
可用); Soft-state(软状态); Eventually Consistent(最终一致性)。
4、支持海量数据的存储和高并发的高效读写。
5、支持分布式,能够对数据进行分片存储,扩缩容简单。

对于不同的存储类型,我们又有各种各样的非关系型数据库,比如有几种常见的类
型:
1、KV 存储,用 Key Value 的形式来存储数据。比较常见的有 Redis 和
MemcacheDB。
2、文档存储,MongoDB。
3、列存储,HBase。
4、图存储,这个图(Graph)是数据结构,不是文件格式。Neo4j。
5、对象存储。
6、XML存储等等等等。

这个网页列举了各种各样的NoSQL数据库 http://nosql-database.org/

Redis 特性

官网介绍:https://redis.io/topics/introduction
中文网站:http://www.redis.cn

硬件层面有CPU的缓存;浏览器也有缓存;手机的应用也有缓存。我们把数据缓存
起来的原因就是从原始位置取数据的代价太大了,放在一个临时位置存储起来,取回就
可以快一些。

Redis的特性:
1)更丰富的数据类型
2)进程内与跨进程;单机与分布式
3)功能丰富:持久化机制、过期策略
4)支持多种编程语言
5)高可用,集群

Redis 安装启动
Linux安装

参考:
CentOS7 安装 Redis 单实例 https://gper.club/articles/7e7e7f7ff7g5egc4g6b
Docker 安装 RabbitMQ 集群 https://gper.club/articles/7e7e7f7ff7g5egc5g6c
主要是注意配置文件几处关键内容(后台启动、绑定 IP、密码)的修改,配置别名

Windows服务端安装

微软自行编写了一个Redis服务端,可用于基本的测试和学习。
https://github.com/MicrosoftArchive/redis/tags

服务启动

src目录下,直接启动

./redis-server

后台启动(指定配置文件)

  1. redis.conf修改两行配置
daemonize yes 这里改成yes,后台启动
bind 0.0.0.0 改成本机的ip ,127.0.0.1
  1. redis.conf修改两行配置
redis-server/usr/local/soft/redis-5.0.5/redis.conf

总结:redis的参数可以通过三种方式配置,一种是redis.conf,一种是启动时–携
带的参数,一种是config set。

基本操作

默认有16个库(0-15),可以在配置文件中修改,默认使用第一个db0。

databases 16

因为没有完全隔离,不像数据库的database,不适合把不同的库分配给不同的业务使用。

切换数据库

select 0

清空当前数据库

flushdb

清空所有数据库

flushall

Redis是字典结构的存储方式,采用key-value存储。key和value的最大长度限制
是512M(来自官网 https://redis.io/topics/data-types-intro/)。

键的基本操作。

命令参考:http://redisdoc.com/index.html

<
数据储方式概述 随着信息社会的发展,越来越多的信息被数据化,尤其是伴随着Internet的发展,数 据呈爆炸式增长。从储服务的发展趋势来看,一方面,是对数据储量的需求越来 越大,另一方面,是对数据的有效管理提出了更高的要求。首先是储容量的急剧膨胀,从 而对于储服务器提出了更大的需求;其次是数据持续时间的增加。最后,对数据储 的管理提出了更高的要求。数据的多样化、地理上的分散性、对重要数据的保护等等都 对数据管理提出了更高的要求。随着数字图书馆、电子商务、多媒体传输等用的不断发 展,数据从GB、TB到PB量级海量急速增长。储产品已不再是附属于服务器的辅助设备 ,而成为互联网中最主要的花费所在。海量储技术已成为继计算机浪潮和互联网浪潮之 后的第三次浪潮,磁盘阵列与网络储成为先锋。 1. 海量数据储简介 海量储的含义在于,其在数据储中的容量增长是没有止境的。因此,用户需要不 断地扩张储空间。但是,储容量的增长往往同储性能并不成正比。这也就造成了 数据储上的误区和障碍。海量储技术的概念已经不仅仅是单台的储设备。而多个 储设备的连接使得数据管理成为一大难题.因此,统一平台的数据管理产品近年来受到 了广大用户的欢迎.这一类型产品能够整合不同平台的储设备在一个单一的控制界面上 ,结合虚拟化软件对储资源进行管理。这样的产品无疑简化了用户的管理。 数据容量的增长是无限的,如果只是一味的添加储设备,那么无疑会大幅增加储 成本。因此,海量储对于数据的精简也提出了要求。同时,不同应用对于储容量的 需求也有所不同,而应用所要求的储空间往往并不能得到充分利用,这也造成了浪费 。 针对以上的问题,重复数据删除和自动精简配置两项技术在近年来受到了广泛的关注 和追捧。重复数据删除通过文件块级的比对,将重复的数据块删除而只留下单一实例。 这一做法使得冗余的储空间得到释放,从客观上增加了储容量。 2. 企业在处理海量数据储中在的问题 目前企业储面临几个问题,一是数据的成本在不断地增加,如何削减开支节约 成本以保证高可用性;二是数据储容量爆炸性增长且难以预估;三是越来越复杂的环 境使得储的数据无法管理.企业信息架构如何适应现状去提供一个较为理想的解决方案 ,目前业界有几个发展方向。 1.储虚拟化 对于储面临的难题,业界采用的解决手段之一就是储虚拟化。虚拟储的概念实 际上在早期的计算机虚拟储器中就已经很好地得以体现,常说的网络储虚拟化只不 过是在更大规模范围内体现储虚拟化的思想。该技术通过聚合多个储设备的空间, 灵活部署储空间的分配,从而实现现有储空间高利用率,避免了不必要的设备开支 . 储虚拟化的好处显而易见,可实现储系统的整合,提高储空间的利用率,简化 系统的管理,保护原有投资等。越来越多的厂商正积极投身于储虚拟化领域,比如数 据复制、自动精简配置等技术也用到了虚拟化技术.虚拟化并不是一个单独的产品,而是 储系统的一项基本功能。它对于整合异构储环境、降低系统整体拥有成本是十分有 效的。在储系统的各个层面和不同应用领域都广泛使用虚拟化这个概念.考虑整个储 层次大体分为应用、文件和块设备三个层次,相应的虚拟化技术也大致可以按这三个层 次分类. 目前大部分设备提供商和服务提供商都在自己的产品中包含储虚拟化技术,使得用 户能够方便地使用。 2.容量扩展 目前而言,在发展趋势上,储管理的重点已经从对储资源的管理转变到对数据资 源的管理。随着储系统规模的不断扩大,数据如何在储系统中进行时空分布成为保 证数据取性能、安全性和经济性的重要问题。面对信息海量增长对储扩容的需求 ,目前主流厂商均提出了各自的解决方案.由于储现状比较复杂,储技术的发展业界 还没有形成统一的认识,因此在应对储容量增长的问题上,尚在很大的提升空间。 技术是发展的,数据的世界也是在不断变化的过程中走向完美。企业信息架构的"分"与 "合"的情况并不绝对.目前、出现了许多的融合技术,如 NAS与SAN的融合,统一储网等等.这些都将对企业信息架构产生不同的影响。至于到底 采用哪种技术更合适,取决于企业自身对数据的需求。 3. 海量数据储技术 为了支持大规模数据储、传输与处理,针对海量数据储目前主要开展如下三个 方向的研究: 1. 虚拟储技术 储虚拟化的核心工作是物理储设备到单一逻辑资源池的映射,通过虚拟化技术, 为用户和应用程序提供了虚拟磁盘或虚拟卷,并且用户可以根据需求对它进行任意分割 、合并、重新组合等操作,并分配给特定的主机或应用程序,为用户隐藏或屏蔽了具体的 物理设备的各种物理特性。储虚拟化可以提高储利用率,降低成本,简化储管理, 而基于网络的虚拟储技
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值