Redis入门——数据库发展历程与ubuntu16.04下载安装

首先声明,本系列Redis博文内容是本人学习【狂神说Java】Redis最新超详细版教程通俗易懂整理的学习笔记,本人也是初次接触Redis,水平有限,难免有错误不足之处,欢迎大家评论指正交流。

目录

一、数据库使用发展历程

二、数据库瓶颈

1.IO瓶颈

2.CPU瓶颈

三、分库分表

1.水平分库

2.水平分表

3.垂直分库

4.垂直分表

四、NoSQL的特点

五、真正的公司中的实践:RDBMS+NoSQL

Redis入门

Linux下载安装测试


一、数据库使用发展历程

先介绍下互联网使用MySQL使用的发展历程:

1.单机MySQL阶段:一台MySQL数据库,用户直接获取数据。当数据量过大时,单台机器放不下了,访问量过大时,一个服务器也承受不了,同时单表数据超过300W条时,数据必须建立索引,机器内存也放不下。于是到了第二阶段

2.缓存(Memcached)+MySQL+垂直拆分(读写分离):28原则,数据库服务器80%情况在读数据,20%在写数据。因此采用多台MySQL服务器,采用主从复制,主机写,从机读,实现读写分离,同时引入缓存,对经常访问的数据放入缓存中,减轻服务器压力。

3.分库分表+水平拆分+MySQL集群:解决数据库读写性能问题

4.MySQL+NoSQl:信息爆炸,数据爆炸,关系型数据库不够用了,数据量大,变化快,数据种类多,需要非关系型数据库专门处理这类数据。如用户的个人信息、社交网络、定位信息,用户自己产生的数据爆发式增长,这些数据的存储不需要固定的格式,不需要多余的操作就可以横向扩展,使用键值对的形式来存储。

二、数据库瓶颈

1.IO瓶颈

1.磁盘读IO瓶颈:热点数据太多,数据库缓存放不下,每次查询都会产生大量的数据库IO操作,导致查询速度慢,可采用分库和垂直分表。
2.网络IO瓶颈,请求的数据太多,网络宽带不够,可采用分库解决。

2.CPU瓶颈

1.SQL问题,包含join、group by,order by,非索引字段条件查询等,增加CPU运算操作。通过SQL语句优化解决。
2.单表数据量太大,查询时扫描行太多,SQL效率低,CPU率先出现瓶颈。采用水平分表。
水平,即横向扩展,增加库或者表;垂直,纵向扩展

三、分库分表

1.水平分库

以字段为依据,按照一定的策略(hash、range等),将一个库中的数据拆分到多个库中。此时每个库的结构一样,但数据都不一样且无交集,各个库的并集是全部数据。(适用于系统并发量大)

2.水平分表

以字段为依据,按照一定的策略(hash、range等),将一个表中的数据拆分到多个表中。此时每个表的结构一样,每个表的数据都不一样,没有交集,所有表的并集是全部数据。(单表数据太多,影响SQL查询效率,加重CPU负担)。
 

3.垂直分库

以表为依据,按照业务属性不同,将不同的表拆分到不同的库中。每个库的结构都不一致,每个库的数据也不一样,没有交集,所有库的并集是全量数据;(系统绝对并大量上来了,并且可以抽象出单独的业务模块)。

4.垂直分表

以字段为依据,按照字段的活跃性,将表中的字段拆到不同的表(主表和扩展表中)。每个表的结构都不一样,数据也不一样,一般来说,每个表的字段至少有一列交集,一般是主键,用于关联数据,所有表的并集是全部数据;(系统场景并发量并没有上来,表的记录并不多,但是字段多,并且热点数据和非热点数据在一起,单行数据所需存储空间较大,以至于数据库缓存的数据行减少,查询时产生大量的随机读IO,产生IO瓶颈)
 
本质都是为了解决数据库的读写问题
    MyISAM:表锁,十分影响效率,高并发下会出现严重的锁问题
    Innodb:行锁
    分库分表解决写的压力!
    MySQL集群
 

四、NoSQL的特点

    1.方便扩展(数据之间没有关系,很好扩展)

    2.大数据量高性能(Redis一秒写8W,读11W,NoSQL缓存记录是一种细粒度的缓存,性能会比较高)

    3.数据类型是多样型的!(不需要事先设计数据库,随取随用,如果是数据库十分大的表,很多人就无法设计)

    4.传统的关联性数据库(RDBMS)和NoSQl

        RDBMS:

            结构化组织、SQL、数据和关系都存储在单独的表中、操作语言,数据定义语言、严格的一致性、基础的事务...

        NoSQL:

            不仅仅是数据、没有固定的查询语言、键值对存储、列存储,文档存储,图形数据库(社交关系)、最终一致性、高性能、高可用、高可扩

五、真正的公司中的实践:RDBMS+NoSQL

    #1.商品的基本信息

      名称、价格、商家信息;关系型数据库就可以解决了!MySQL、Oracle

    #2.商品的描述、评论(文字比较多)

      文档型数据库(MongoDB)

    #3.图片

      分布式文件系统FastDFS    阿里云的 OSS

      淘宝自己的TFS

      google的GFS

      hadoop HDFS

    #4.商品的关键字(搜索)

      搜索引擎:solr、elasticsearch

      ISerach:多隆

    #5.商品的热门的波段信息

      内存数据库

      redis、Tair、Memache...

    #6.商品的交易,外部的支付接口

      三方应用

NoSQL四大分类:1.KV键值对;2.文档型数据库;3.列存储数据库;4.图形关系数据库

 

Redis入门

    Redis(Remote Dictionary Server),即远程字典服务。开源的、使用ANSI c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库。当下最热门的NoSQL技术之一,也称为结构化数据库。

    Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master—slave同步(主从同步)

Redis作用:   

    1.内存存储、持久化,内存中是断电即失,所以持久化很重要(RDB、AOF)

    2.效率高,可以用于高速缓存

    3.发布订阅系统

    4.地图信息分析

    5.计时器、计数器(浏览量)

    6....

特性

    1.多样的数据类型

    2.持久化

    3.集群

    4.事务

    ...

Linux下载安装测试

redis下载安装步骤:Redis官网下载对应版本,进入文件目录下(确保有gcc),输入make命令安装,默认安装路径是/usr/local/bin, 复制安装包路径下的redis.conf到 /usr/local/bin/自定义文件夹下,修改redis.conf文件,将daemonize no改成daemonize yes

安装,make命令

确认安装完毕

复制配置文件,将其从下载目录复制到默认安装目录下(likeconfig是我自己新建的存放配置文件的地方),修改redis.conf文件,将daemonize no改成daemonize yes,允许以后台进程启动。

启动redis,在/usr/local/bin目录下: sudo redis-server likeconfig/redis.conf   //启动redis服务

                   

客户端连接:sudo redis-cli -p 6379 // 6379是默认端口

redis测试:ping 可以返回PONG

        set key value

        get key  

        keys *    //查看所有的key

此时可正常运行,说明Redis安装成功且可以正常运行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值