第一章 Redis基础(简介+下载和安装+基本操作)----黑马

第一章 Redis基础(简介+下载和安装+基本操作) ----黑马

文章目录

课程计划

1. Redis 入 门 (了解) (操作)
2. 数据类型 (重点) (操作) (理解)
3. 常用指令 (操作)
4. Jedis (重点) (操作)
5. 持 久 化 (重点) (理解)
6. 数据删除与淘汰策略 (理解)
7. 主从复制 (重点) (操作) (理解)
8. 哨 兵 (重点) (操作) (理解)
9. Cluster集群方案 (重点) (操作) (理解)
10. 企业级缓存解决方案 (重点) (理解)
11. 性能指标监控 (了解)

学习目标:

目标1:能够说出NoSQL的概念,redis的应用场景,能够完成redis的下载安装与启动以及一些常用的配置

目标2:能够说出redis常用的5种数据类型,对应这些数据类型的基本操作,应用场景及对应的解决方案

目标3:能够说出redis中常用的一些基本指令

目标4:能够使用jedis完成客户端应用程序的开发

目标5:能够说出redis数据持久化的两种方式,各自相关的操作配置及指令,以及两种方式的优缺点比较

1. Redis 简介

在这个部分,我们将学习以下3个部分的内容,分别是:

◆ Redis 简介(NoSQL概念、Redis概念)

◆ Redis 的下载与安装

◆ Redis 的基本操作

1.1 NoSQL概念

1.1.1 NoSQL的概念

(1)概念

NoSQL:即 Not-Only SQL( 泛指非关系型的数据库),作为关系型数据库的补充。 作用:应对基于海量用户和海量数据前提下的数据处理问题。

他说这句话说的非常客气,什么意思呢?就是我们数据存储要用SQL,但是呢可以不仅仅用SQL,还可以用别的东西,那别的东西叫什么呢?于是他定义了一句话叫做NoSQL。这个意思就是说我们存储数据,可以不光使用SQL,我们还可以使用非SQL的这种存储方案,这就是所谓的NoSQL。

(2)特征

可扩容,可伸缩。SQL数据关系过于复杂,你扩容一下难度很高,那我们Nosql 这种的,不存关系,所以它的扩容就简单一些。

大数据量下高性能。包数据非常多的时候,它的性能高,因为你不走磁盘IO,你走的是内存,性能肯定要比磁盘IO的性能快一些。

灵活的数据模型、高可用。他设计了自己的一些数据存储格式,这样能保证效率上来说是比较高的,最后一个高可用,我们等到集群内部分再去它!

(3)常见 Nosql 数据库

目前市面上常见的Nosql产品:Redis、memcache、HBase、MongoDB
在这里插入图片描述

1.2 Redis概念

1.2.1 redis概念

概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。

特征:

(1)数据间没有必然的关联关系;

(2)内部采用单线程机制进行工作;

(3)高性能。官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。

(4)多数据类型支持

字符串类型,string list

列表类型,hash set

散列类型,zset/sorted_set

集合类型

有序集合类型

(5)支持持久化,可以进行数据灾难恢复

1.2.2 redis的应用场景

(1)为热点数据加速查询(主要场景)。如热点商品、热点新闻、热点资讯、推广类等高访问量信息等。

(2)即时信息查询。如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等。

(3)时效性信息控制。如验证码控制、投票控制等。

(4)分布式数据共享。如分布式集群架构中的 session 分离
消息队列.

1.3 Redis 的下载与安装

后期所有资料分4中不同色块显示,详情如下:
在这里插入图片描述

1.3.1 Redis 的下载与安装

本课程所示,均基于Center OS7安装Redis。

(1)下载Redis

下载安装包:

wget http://download.redis.io/releases/redis-5.0.0.tar.gz

解压安装包:

tar –xvf redis-5.0.0.tar.gz

编译(在解压的目录中执行):

make

安装(在解压的目录中执行):

make install

(2)安装 Redis

redis-server,服务器启动命令 客户端启动命令

redis-cli,redis核心配置文件

redis.conf,RDB文件检查工具(快照持久化文件)

redis-check-dump,AOF文件修复工具

redis-check-aof

1.4 Redis服务器启动

1.4.1 Redis服务器启动

启动服务器——参数启动

redis-server [--port port]

范例

redis-server --port 6379

启动服务器——配置文件启动

redis-server config_file_name

范例

redis-server redis.conf
1.4.2 Redis客户端启动

启动客户端

redis-cli [-h host] [-p port]

范 例

redis-cli –h 61.129.65.248 –p 6384

注意:服务器启动指定端口使用的是–port,客户端启动指定端口使用的是-p。-的数量不同。

1.4.3 Redis基础环境设置约定

创建配置文件存储目录

mkdir conf

创建服务器文件存储目录(包含日志、数据、临时配置文件等)

mkdir data

创建快速访问链接

ln -s redis-5.0.0 redis

1.5 配置文件启动与常用配置

1.5.1 服务器端设定

设置服务器以守护进程的方式运行,开启后服务器控制台中将打印服务器运行信息(同日志内容相同)

daemonize yes|no

绑定主机地址

bind ip

设置服务器端口

port port

设置服务器文件保存地址

dir path
1.5.2 客户端配置

服务器允许客户端连接最大数量,默认0,表示无限制。当客户端连接到达上限后,Redis会拒绝新的连接

maxclients count

客户端闲置等待最大时长,达到最大值后关闭对应连接。如需关闭该功能,设置为 0

timeout seconds
1.5.3 日志配置

设置服务器以指定日志记录级别

loglevel debug|verbose|notice|warning

日志记录文件名

logfile filename

注意:日志级别开发期设置为verbose即可,生产环境中配置为notice,简化日志输出量,降低写日志IO的频度。

1.6 Redis基本操作

1.6.1 命令行模式工具使用思考

功能性命令

帮助信息查阅

退出指令

清除屏幕信息

1.6.2 信息读写

设置 key,value 数据

set key value

范例

set name itheima

根据 key 查询对应的 value,如果不存在,返回空(nil)

get key

范例

get name
1.6.3 帮助信息

获取命令帮助文档

help [command]

范例

help set

获取组中所有命令信息名称

help [@group-name]

范例

help @string

1.6.4 退出命令行客户端模式

退出客户端

quit
exit

快捷键

Ctrl+C
1.6.4 redis入门总结

到这里,Redis 入门的相关知识,我们就全部学习完了,再来回顾一下,这个部分我们主要讲解了哪些内容呢?

首先,我们对Redis进行了一个简单介绍,包括NoSQL的概念、Redis的概念等。

然后,我们介绍了Redis 的下载与安装。包括下载与安装、服务器与客户端启动、以及相关配置文件(3类)。

最后,我们介绍了Redis 的基本操作。包括数据读写、退出与帮助信息获取。

2. 数据类型

在这个部分,我们将学习一共要学习三大块内容,首先需要了解一下数据类型,接下来将针对着我们要学习的数据类型进行逐一的讲解,如string、hash、list、set等,最后我们通过一个案例来总结前面的数据类型的使用场景。

2.1 数据存储类型介绍

2.1. Redis 数据类型(5种常用)

基于以上数据特征我们进行分析,最终得出来我们的Redis中要设计5种 数据类型:

string、hash、list、set、sorted_set/zset(应用性较低)

2.2 string数据类型

在学习第一个数据类型之前,先给大家介绍一下,在随后这部分内容的学习过程中,我们每一种数据类型都分成三块来讲:首先是讲下它的基本操作,接下来讲一些它的扩展操作,最后我们会去做一个小的案例分析。

2.2.1Redis 数据存储格式

在学习string这个数据形式之前,我们先要明白string到底是修饰什么的。我们知道redis 自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储。

对于这种结构来说,我们用来存储数据一定是一个值前面对应一个名称。我们通过名称来访问后面的值。按照这种形势,我们可以对出来我们的存储格式。前面这一部分我们称为key。后面的一部分称为value,而我们的数据类型,他一定是修饰value的。
在这里插入图片描述

数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串。

2.2.2 string 类型

(1)存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型。

string,他就是存一个字符串儿,注意是value那一部分是一个字符串,它是redis中最基本、最简单的存储数据的格式。

(2)存储数据的格式:一个存储空间保存一个数据

每一个空间中只能保存一个字符串信息,这个信息里边如果是存的纯数字,他也能当数字使用,我们来看一下,这是我们的数据的存储空间。

(3)存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用.
在这里插入图片描述

一个key对一个value,而这个itheima就是我们所说的string类型,当然它也可以是一个纯数字的格式。

2.2.3 string 类型数据的基本操作

(1)基础指令

添加/修改数据添加/修改数据

set key value

获取数据

get key

删除数据

del key

判定性添加数据

setnx key value

添加/修改多个数据

mset key1 value1 key2 value2 …

获取多个数据

mget key1 key2 …

获取数据字符个数(字符串长度)

strlen key

追加信息到原始信息后部(如果原始信息存在就追加,否则新建)

append key value

(2)单数据操作与多数据操作的选择之惑

即set 与mset的关系。这对于这两个操作来说,没有什么你应该选哪个,而是他们自己的特征是什么,你要根据这个特征去比对你的业务,看看究竟适用于哪个。

在这里插入图片描述

假如说这是我们现在的服务器,他要向redis要数据的话,它会发出一条指令。那么当这条指令发过来的时候,比如说是这个set指令过来,那么它会把这个结果返回给你,这个时候我们要思考这里边一共经过了多长时间。

首先,发送set指令要时间,这是网络的一个时间,接下来redis要去运行这个指令要消耗时间,最终把这个结果返回给你又有一个时间,这个时间又是一个网络的时间,那我们可以理解为:一个指令发送的过程中需要消耗这样的时间.

但是如果说现在不是一条指令了,你要发3个set的话,还要多长时间呢?对应的发送时间要乘3了,因为这是三个单条指令,而运行的操作时间呢,它也要乘3了,但最终返回的也要发3次,所以这边也要乘3。

于是我们可以得到一个结论:单指令发3条它需要的时间,假定他们两个一样,是6个网络时间加3个处理时间,如果我们把它合成一个mset呢,我们想一想。

假如说用多指令发3个指令的话,其实只需要发一次就行了。这样我们可以得到一个结论,多指令发3个指令的话,其实它是两个网络时间加上3个redis的操作时间,为什么这写一个小加号呢,就是因为毕竟发的信息量变大了,所以网络时间有可能会变长。

那么通过这张图,你就可以得到一个结论,我们单指令和多指令他们的差别就在于你发送的次数是多还是少。当你影响的数据比较少的时候,你可以用单指令,也可以用多指令。但是一旦这个量大了,你就要选择多指令了,他的效率会高一些。

2.3 string 类型数据的扩展操作

2.3.1 string 类型数据的扩展操作

下面我们来看一string的扩展操作,分成两大块:一块是对数字进行操作的,第二块是对我们的key的时间进行操作的。

设置数值数据增加指定范围的值

incr key
incrby key increment
incrbyfloat key increment

设置数值数据减少指定范围的值

decr key
decrby key increment

设置数据具有指定的生命周期

setex key seconds value
psetex key milliseconds value
2.3.2 string 类型数据操作的注意事项

(1)数据操作不成功的反馈与数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

管程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值