• 基于内存的分布式NoSQL数据库Redis(一)介绍与安装


    基于内存的分布式NoSQL数据库Redis

    知识点01:课程目标

    1. 整体目标
      • Redis:NoSQL数据库,实时存储
      • Kafka:消息队列,实时存储
      • Hbase:NoSQL数据库,实时存储
    2. Redis的基本介绍和使用
      • 功能与应用场景
      • Redis的使用:基于命令的操作、基于编程的操作【JavaAPI】
        • 多练习
      • Redis的存储设计:性能、安全
      • 思想:大道至简

    知识点02:NoSQL与RDBMS

    • 目标:了解NoSQL的应用场景与RDBMS的区别

    • 路径

      • step1:RDBMS的特点
      • step2:业务架构中的问题
      • step3:NoSQL的特点
    • 实施

      • RDBMS的特点:关系型数据库管理系统

        • 工具:MySQL、Oracle、SQL Server……
        • 应用:业务性数据存储系统:事务和稳定性
        • 特点:体现数据之间的关系,支持事务,保证业务完整性和稳定性,小数据量的性能也比较好
        • 开发:SQL
      • 业务架构中的问题

        • 问题:以网站后台存储为例,当并发量很大,所有高并发全部直接请求MySQL,容易导致MySQL奔溃

          image-20210519220356711

        • 需求:能实现高并发的数据库,接受高并发请求

      • NoSQL的特点:Not Only SQL:非关系型数据库

        • 工具:Redis、HBASE、MongoDB……

        • 应用:一般用于高并发高性能场景下的数据缓存或者数据库存储

        • 特点:读写速度特别快,并发量非常高,相对而言不如RDBMS稳定,对事务性的支持不太友好

        • 开发:每种NoSQL都有自己的命令语法

        • 解决上面RDBMS的问题:使用高并发缓存实现读写分离

          • 读请求:读请求不读取MySQL,读取Redis
          • 写请求:写请求直接写入MySQL

          image-20210519220547502

    • 小结

      • RDBMS和NoSQL的应用特点分别是什么?
      • RDBMS
        • 场景:业务数据库
        • 特点:稳定性高、事务支持比较完善、小数据量性能好
        • NoSQL
          • 场景:高并发高性能的数据存储
          • 特点:稳定性和安全性相对不如RDBMS,支持高并发和高性能

    知识点03:Redis的功能与应用场景

    • 目标:掌握Redis的功能与应用场景

    • 路径

      • step1:介绍
      • step2:功能特点
      • step3:应用场景
    • 实施

      • 介绍

        • 相关网站

        • 官方介绍

          Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
          
          • 1
        • 定义:基于内存的分布式的NoSQL数据库

          • 所有数据存储在内存中,并且有持久化机制
          • 每次redis重启,会从文件中重新加载数据到内存,所有读写都只基于内存
      • 功能特点

        • 功能:提供高性能高并发的数据存储
        • 特点
          • 基于C语言开发的系统,与硬件的交互性能更好
          • 基于内存实现数据读写,读写性能更快
          • 分布式的:扩展性和稳定性更好
          • KV结构数据库:支持事务、拥有各种丰富的数据结构
            • KV结构
              • 缺点:两列,不能满足复杂的业务存储
              • 优点:Value可以支持多种类型,满足不同需求的存储
                • String、List、Set、Hash、Zset:掌握这五种类型的读写命令
      • 应用场景

        • 缓存:用于实现大数据量高并发的大数据量缓存【临时性存储】

          • 网站架构中:接受高并发的缓存读写请求
        • 数据库:用于实现高性能的小数据量读写【永久性存储】

          • 大数据平台中:高性能:一般用于作为实时计算结果的存储

          image-20210919095615838

        • 消息中间件:消息队列【MQ】:用于实现消息传递,一般不用Redis

    • 小结

      • Redis的功能与应用场景是什么?
        • 功能:实现基于高性能和高并发的数据存储【基于内存】
        • 应用
          • 缓存:高并发来接受高并发的读写,大数据量,临时性存储,允许数据丢失
          • 数据库:高性能来接受数据的读写,小数据量,永久性存储,不允许数据丢失

    知识点04:Redis的Linux版单机部署

    • 目标:实现Redis的Linux版单机部署

    • 实施

      • Windows版本安装及远程工具使用请参考随堂资料《Redis的Windows版安装及远程工具的使用.pdf》

      • 上传redis-3.2.8源码

        cd /export/software/
        rz
        
        • 1
        • 2

        image-20210521102236816

      • 解压

        tar -zxvf redis-3.2.8.tar.gz -C /export/server/
        
        • 1

        image-20210521102259929

      • 安装依赖

        yum -y install gcc-c++ tcl
        
        • 1

        image-20210521102417864

        image-20210521102518266

        • 如果已经安装过,执行命令结果如下:

          image-20210904103725987

      • 编译安装

        #进入源码目录
        cd /export/server/redis-3.2.8/
        #编译
        make
        #安装,并指定安装目录
        make PREFIX=/export/server/redis-3.2.8-bin install
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6

        image-20210521102629002

      • 修改配置

        • 复制配置文件

          cp /export/server/redis-3.2.8/redis.conf /export/server/redis-3.2.8-bin/
          
          • 1
        • 创建目录

          #redis日志目录
          mkdir -p /export/server/redis-3.2.8-bin/logs
          #redis数据目录
          mkdir -p /export/server/redis-3.2.8-bin/datas
          
          • 1
          • 2
          • 3
          • 4
        • 修改配置

          cd  /export/server/redis-3.2.8-bin/
          vim redis.conf
          
          • 1
          • 2
          ## 61行,配置redis服务器接受链接的网卡
          bind node1
          ## 128行,redis是否后台运行,设置为yes
          daemonize yes
          ## 163行,设置redis服务日志存储路径
          logfile "/export/server/redis-3.2.8-bin/logs/redis.log"
          ## 247行,设置redis持久化数据存储目录
          dir /export/server/redis-3.2.8-bin/datas/
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
        • 创建软连接

          cd /export/server
          ln -s redis-3.2.8-bin redis
          
          • 1
          • 2
        • 配置环境变量

          vim /etc/profile
          
          • 1
          # REDIS HOME
          export REDIS_HOME=/export/server/redis
          export PATH=:$PATH:$REDIS_HOME/bin
          
          • 1
          • 2
          • 3
          source /etc/profile
          
          • 1
      • 启动

        • 端口:6379

        • 启动服务端

          • 启动命令

            /export/server/redis/bin/redis-server /export/server/redis/redis.conf
            
            • 1
          • 启动脚本

            vim /export/server/redis/bin/redis-start.sh
            
            • 1
            #!/bin/bash 
            
            REDIS_HOME=/export/server/redis
            ${REDIS_HOME}/bin/redis-server ${REDIS_HOME}/redis.conf
            
            • 1
            • 2
            • 3
            • 4
            chmod u+x /export/server/redis/bin/redis-start.sh 
            
            • 1
        • 启动客户端

          /export/server/redis/bin/redis-cli -h node1 -p 6379
          
          • 1
        • 关闭客户端

          • exit:退出客户端
        • 关闭服务端

          • 方式一:客户端中

            shutdown
            
            • 1
          • 方式二:Linux命令行

            kill -9 redis的pid
            
            • 1
          • 方式三:通过客户端命令进行关闭

            bin/redis-cli -h node1 -p 6379  shutdown
            
            • 1
      • 测试

        node1:6379> keys *
        (empty list or set)
        node1:6379> set s1 hadoop
        OK
        node1:6379> keys *
        1) "s1"
        node1:6379> get s1
        "hadoop"
        node1:6379> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
      • 远程工具的使用:参考Windows安装文档

    • 小结

      • 实现Redis的Linux版单机部署

    后记

    📢博客主页:https://manor.blog.csdn.net

    📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
    📢本文由 Maynor 原创,首发于 CSDN博客🙉
    📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐
    📢专栏持续更新,欢迎订阅:https://blog.csdn.net/xianyu120/category_12394313.html

  • 相关阅读:
    Docker使用遇到问题:docker build requires exactly 1 argument(s)
    JDK1.8新特性
    c++ SFML ftp重命名文件
    天津Java培训机构 Java的发展空间如何?
    爬虫实战——求是网周刊文章爬取
    【二】微信开发中的https
    快速使用 Kafka
    BeanUtils.copyProperties的用法
    webpack基础版及其常用插件分享超详细~~
    C#控制台相关方法
  • 原文地址:https://blog.csdn.net/xianyu120/article/details/133787108