redis

02.NOSql介绍与好处【理解】

疑问
  • mysql这种关系型数据库(磁盘数据库)在处理大数据量存储和大量用户并发访问获取数据方面,性能如何?

    非常慢,对磁盘操作需要使用IO流,一个字节一个字节存取操作。所有数据读取到内存中后才可以操作。

    使用内存数据库优化磁盘数据库,内存数据库就是非关系型数据库NOSQL

NOSql介绍

NOSql,全称 not only sql ,不仅仅是sql,泛指非关系型数据库。

非关系与关系型数据库的区别

[外链图片转存失败(img-jHFlNohQ-1566891027218)(assets/)]

为什么需要NOSql?

因为是内存操作数据,非常快,会让系统性能大大提高。(解决了3高问题,高并发,高海量,高可用)

高并发:同一个时间点并发访问量非常大。

高海量:一个人访问的数据非常大,查询一个表,表中的数据有上亿条。

高可用:服务器崩溃了,服务器需要立刻重启后数据依然可用。

以后到底用关系型数据库还是非关系型数据库?

2个都用

[外链图片转存失败(img-ki7lxp3i-1566891027219)(assets/)]

小结
  • 非关系数据库的性能为什么高于关系型数据库?

    因为内存存取远远大于磁盘读写的速度

03.NOSql数据库产品-Redis与Redis安装【理解】

非关系型数据库的产品

[外链图片转存失败(img-vOCJUqEi-1566891027220)(assets/)] 

java领域主要使用redis

redis存储数据特点

使用键值对进行存取

redis安装与目录介绍
  1. 下载

    windows版本,https://github.com/MSOpenTech/redis/tags 微软提供的

    [外链图片转存失败(img-GPk9ER4w-1566891027220)(assets/)]

    linux版本,官方提供的http://redis.io/download

    [外链图片转存失败(img-zwXQyMNr-1566891027221)(assets/)]

    大家不需要下载,因为软件目录中提供了

    [外链图片转存失败(img-isaieDIy-1566891027221)(assets/)]

  2. 解压完成安装

    [外链图片转存失败(img-ekqEVIho-1566891027222)(assets/)]

  3. 介绍redis的目录结构

    [外链图片转存失败(img-vS3QDxrE-1566891027222)(assets/)] 

使用redis存储数据体验步骤
  1. 双击运行redis服务器端redis-server.exe

    [外链图片转存失败(img-2Sd5wehG-1566891027222)(assets/)]

  2. 双击运行redis客户端redis-cli.exe

  3. 在客户端上进行存取数据

    [外链图片转存失败(img-zwBXqwQr-1566891027223)(assets/)]

小结
  • redis是以什么方式存储数据的?

    键值对

  • redis客户端与服务器端软件的名字是什么?

    redis-cli.exe

    redis-server.exe

  • redis服务器使用的端口号是?

    6379

04.redis存储数据的五种数据类型结构介绍【理解】

目标

redis常见可以存储5种数据类型

类型介绍

[外链图片转存失败(img-U3SVlHYF-1566891027223)(assets/)]

key的使用原则
  1.    不建议key名字太长,通常不超过1024字节,如果太长会影响查询的速度。
    
  2.    不建议太短,太短会降低可读性。
    
  3.    一般在公司,都有统一命名规范。
    

见名知意,与java变量的命名规范一致

小结
  • redis支持常用五种数据类型都有哪些?

    string

    hash

    list
    set

    sorted set(zset)

  • 以后最常用使用哪种数据类型?

    string

05.redis数据类型命令1—String类型【应用】

介绍

字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中以二进制保存,没有编码和解码的过程。无论存入的是字符串、整数、浮点类型都会以字符串写入。在 Redis 中字符串类型的 Value 最多可以容纳的数据长度是 512M。这是以后最常用的数据类型。

[外链图片转存失败(img-07vCqaRg-1566891027223)(assets/)]

操作命令语法

[外链图片转存失败(img-J2pvMIXu-1566891027224)(assets/)]

String操作命令

[外链图片转存失败(img-rF6a7r2i-1566891027224)(../%E7%AC%94%E8%AE%B0/assets/)]

小结
  • 以后java应用开发主要使用redis什么类型存储数据数据?

    string类型

06.redis数据类型命令2—hash类型【应用】

介绍

Redis 中的 Hash 类型可以看成具 String 的键和 String 的值 Map 容器,每一个 Hash 可以存储 40(42 亿 9千多个)亿个键值对。

[外链图片转存失败(img-XJm3K7Qj-1566891027224)(assets/)]

操作命令语法

[外链图片转存失败(img-M1aQreWD-1566891027225)(assets/)]

操作

[外链图片转存失败(img-VxCuUYdJ-1566891027226)(assets/)]

小结
  • 使用hash类型添加存储数据的语法?

    hset key field1 value1

    hmset key field1 value1 field2 value2 …

07.redis数据类型命令3—list类型【应用】

list介绍

在 Redis 中,List 类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其左部(left)和右部(right)添加新的元素。在插入时,如果该键并不存在,Redis 将为该键创建一个新的链表,如果这个键已经存在,则是向 list 添加元素。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List 中可以包含的最大元素数量是 40 亿个。

[外链图片转存失败(img-d4e0ywQ1-1566891027227)(assets/)]

添加元素语法

[外链图片转存失败(img-Bj5xgUdf-1566891027227)(assets/)]

操作

[外链图片转存失败(img-sFowqYxC-1566891027227)(assets/)]

效果

[外链图片转存失败(img-PZMgy39w-1566891027228)(assets/)]

读取数据的语法

[外链图片转存失败(img-sySWnyrN-1566891027228)(assets/)]

效果

[外链图片转存失败(img-6GTbyBvX-1566891027228)(assets/)]

删除元素

[外链图片转存失败(img-g6mx8TUC-1566891027228)(assets/)]

效果

[外链图片转存失败(img-E1yZtGIV-1566891027229)(assets/)]

查看列表的长度

[外链图片转存失败(img-Ffla5fgD-1566891027230)(assets/)]

[外链图片转存失败(img-cNDpY8gn-1566891027230)(assets/)]

list应用场景

以后对于高并发的下单数据,先写入redis的list类型数据(链表,有序的),再通过链表一个一个有序删除获取删除的数据(下单数据),再写入数据库。

小结
  • list类型数据特点?

    链表,有序,可重复

    [外链图片转存失败(img-UBbl3tbf-1566891027231)(assets/)]

08.redis数据类型命令4—set类型【应用】

介绍

在 Redis 中,我们可以将 Set 类型看作为没有排序的字符集合,和 List 类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。Set 可包含的最大元素数量是 40 亿,和 List 类型不同的是,Set 集合中不允许出现重复的元素。

[外链图片转存失败(img-0dW3dmQN-1566891027231)(assets/)]

操作命令语法

存储数据特点:不可重复,无序

[外链图片转存失败(img-YWhTkjNJ-1566891027232)(assets/)]

效果

[外链图片转存失败(img-tvGJ6AFI-1566891027232)(assets/)]

小结
  • set类型数据特点?

    无序,不可重复

09.redis数据类型命令5—zset类型【应用】

介绍

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复,每个集合可存储40多亿个成员。

[外链图片转存失败(img-QhskqXaG-1566891027233)(assets/)]

常用命令

[外链图片转存失败(img-DK5NV5Mr-1566891027233)(assets/)]

命令演示
  1.   添加键country,分数是10,值是Japan
    
  2.   添加键country,分数是5,值是USA
    
  3.   添加键country,分数是1,值是China,分数是120,值是Korea
    
  4.   查询country中所有的元素
    
  5.   查询Japan的索引号(从0开始)
    
  6.   删除值为USA的元素
    
  7.   查询country中还有多少个元素
    

效果

[外链图片转存失败(img-5q0i83ca-1566891027234)(assets/)] 

小结

如果希望了解其他类型,怎么办?

http://www.runoob.com/redis/redis-sorted-sets.html

10.客户端工具使用与redis通用命令【应用】

客户端软件

直接安装提供的客户端软件即可,双击桌面图标执行。

[外链图片转存失败(img-8LRjom7v-1566891027234)(assets/)] 

启动后出现如下登录界面:

[外链图片转存失败(img-SY3dHG7U-1566891027235)(assets/)] 

[外链图片转存失败(img-w9Z1XRcM-1566891027235)(assets/)]

[外链图片转存失败(img-snNFLQDd-1566891027236)(assets/)]

操作命令语法

[外链图片转存失败(img-CgfDpLIC-1566891027236)(assets/)]

效果

[外链图片转存失败(img-T1abVAx8-1566891027236)(assets/)]

[外链图片转存失败(img-1KAqawRP-1566891027237)(assets/)]

11.redis持久化方式1-RDB策略【理解】

疑问
  • redis服务器关闭所有内存数据都会丢失吗?

    不会全部丢失,默认只会丢失一部分,因为redis有持久化机制,redis会将内存数据符合条件时进行持久化,在redis重启的时候会恢复持久化的数据,这就是内存数据不会全部丢失。

RDB策略介绍(快照策略)

rdb(redis data base)持久化策略就是在符合一定条件下将内存所有数据持久化到磁盘中dump.rdb文件中。RDB策略是redis默认持久化策略。也叫快照策略。

为什么叫快照策略? 因为磁盘持久化的数据为某一个时间点的内存所有数据。

RDB策略的配置

[外链图片转存失败(img-14oH9Ukk-1566891027237)(assets/)]

rdb持久化内存的数据到dump.rdb文件,文件中会存储键值对数据。

rdb持久化的时候是将当时内存中所有的键值对一次性的持久化到dump.rdb

案例演示-采用RDB策略持久化数据测试
  • 需求

    修改rdb持久化策略方案,设置20秒内修改3个键进行持久化数据到dump.rdb文件中

  • 实现步骤

    1. 修改配置文件redis.windows.conf,增加输入性配置

      save 20 3
      

    [外链图片转存失败(img-x0h6wF0t-1566891027237)(assets/)]

    1. 关闭redis客户端、服务器端,重启redis服务器,注意重启时必须指明配置文件启动

      [外链图片转存失败(img-QWN7xImO-1566891027237)(assets/)]

    2. 启动客户端,观察redis服务器是否存储3个键值对,是否进行持久化操作

      [外链图片转存失败(img-2hEhGjuE-1566891027238)(assets/)]

注意

如果修改了配置文件redis.windows.conf,下次重启服务器端必须启动dos命令指定配置文件启动服务器。否则服务器无法识别配置文件的修改。

reids-server.exe redis.windows.conf
小结
  • rdb策略的优点?

    持久化的频率不高,意味着redis提供给用户操作数据性能更高

  • rdb策略的缺点?

    持久化的频率不高,意味着丢失数据严重,数据安全性低

12.redis持久化方式2-AOF策略【理解】

AOF(append only file)策略介绍

默认没有开启的策略,它的特点持久化的频率更高了,默认每秒持久化1次。每一秒内将最新的写入与删除的命令进行持久化。

需要修改配置文件redis.windows.conf进行开启AOF策略,如下操作

[外链图片转存失败(img-IVEV7l4N-1566891027239)(assets/)]

开启AOF后,持久化策略有3个

[外链图片转存失败(img-rV8h0xlZ-1566891027239)(assets/)]

AOF默认是采用的策略是每秒持久化一次,会导致持久化文件随着时间不断增大,AOF会记录每一个key所有修改操作的过程。

案例演示-采用AOF策略持久化数据测试
  • 需求

    开启AOF策略进行持久化数据测试,观察其持久化数据的过程

  • 实现步骤

    1. 修改配置文件redi.windows.conf,开启aof

      [外链图片转存失败(img-bN0cumvr-1566891027239)(assets/)]

    2. 关闭客户端、服务器端,重启服务器端并指定配置文件启动

    3. 观察持久化的数据

疑问:每秒都持久化会导致日志文件过大,那么文件过大怎么办?需要开发人员做什么优化吗?

答:不需要开发人员做任何事情,redis对于aof策略有日志过大有重写机制(如下信息都在配置文件中)

[外链图片转存失败(img-n2NwTycy-1566891027239)(../%E7%AC%94%E8%AE%B0/assets/)]

小结
  • AOF策略的优点?

    每秒持久化,具有更高的数据安全,如果服务器崩溃只会丢1秒内的数据

  • AOF缺点?

    由于持久化频率高,redis的性能会变低。

13.redis持久化RDB与AOF实践总结【理解】

疑问
  • RDB和AOF以后到底推荐使用哪一个呢?

    官方推荐2个都使用,因为可以保证数据高可用。

    如果希望高可用,才开AOF,否则只建议使用RDB,因为AOF会降低redis的性能(cpu超过60%都会选择关闭AOF)。

官方建议

通常,如果你要想提供很高的数据保障性,那么建议你同时使用两种持久化方式。
如果你可以接受灾难带来的几分钟的数据丢失,那么你可以仅使用RDB。
很多用户仅使用了AOF,但是我们建议,既然RDB可以时不时的给数据做个完整的快照,并且提供更快的重启,所以最好还是也使用RDB。
因此,我们希望可以在未来(长远计划)统一AOF和RDB成一种持久化模式。(redis.3.0版本以后默认RDB和AOF都开启了)

常见面试题

[外链图片转存失败(img-3ZfB0n0h-1566891027241)(assets/)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值