Redis 入门(1):NoSQL介绍,Redis 的安装

Redis 官网: https://redis.io/
Redis 在线测试: http://try.redis.io/
Redis菜鸟教程: https://www.runoob.com/redis/redis-tutorial.html

NoSQL 简介

NoSQL 的作用

保证数据共享,减少服务器负担

在 web 2.0 时代,由于客户端的增多,单机服务器已经无法满足这么高的吞吐量,因此出现了 负载均衡技术
在这里插入图片描述
负载均衡技术其实很好理解:就是在多服务器前面增加一个负载服务器,该服务器用于调度收到的请求,并将这些请求均衡的分配给真正处理请求的服务器
但是负载均衡技术也存在着一些问题,拿登录操作举例:

  • 比如现在有一个登录操作,服务器A验证了用户后,将用户名存在了session 中。然后下一次客户端请求时,负责调度的服务器又将该请求发给了服务器B。而此时服务器B是不存在session的。这就造成了数据不同步的问题
  • 解决方法1: 将用户登录信息的session存在cookie中。每次客户端发请求时都会带上自己的cookie。缺点就是不安全。
  • 解决方法2: session复制,将session同步到所有服务器中。缺点是数据冗余,性能损失。
  • 解决方法3: 利用 NoSQL 数据库,创建一个基于缓存的数据库,存储一些数据库需要共享点的内存变量。

减少IO次数

  • NoSQL 除了能够保证内存变量的同步之外,还可以用来存储一些高频热点数据,进而减少数据库的 IO 操作。

NoSQL数据库概述

  • NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库
  • NoSQL 不依赖业务逻辑方式存储,而以简单的 key-value模式存储。因此大大的增加了数据库的扩展能力。
    • 不遵循SQL标准。
    • 不支持ACID(原子性,一致性,隔离性,高持久性)。
    • 远超于SQL的性能。

NoSQL适用场景

  • 对数据高并发的读写
  • 海量数据的读写
  • 对数据高可扩展性的

NoSQL不适用场景

  • 需要事务支持
  • 基于sql的结构化查询存储,处理复杂的关系,需要即时查询。

常见的 NoSQL 数据库

  • Memcache

    • 很早出现的NoSql数据库
    • 数据都在内存中,一般不持久化
    • 支持简单的key-value模式,支持类型单一
    • 一般是作为缓存数据库辅助持久化的数据库
  • Redis

    • 几乎覆盖了Memcached的绝大部分功能
    • 数据都在内存中,支持持久化,主要用作备份恢复
    • 除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset等。
    • 一般是作为缓存数据库辅助持久化的数据库
  • MongoDB

    • 高性能、开源、模式自由(schema free)的文档型数据库
    • 数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘
    • 虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能
    • 支持二进制数据及大型对象
    • 可以根据数据的特点替代RDBMS ,成为独立的数据库。或者配合RDBMS,存储特定的数据。

分布式数据库CAP原理

传统的ACID分别是什么

关系型数据库遵循ACID规则

  • 1、A (Atomicity) 原子性
  • 2、C (Consistency) 一致性 一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
  • 3、I (Isolation) 独立性 所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的
  • 4、D (Durability) 持久性 持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

CAP

  • C:Consistency(强一致性)
  • A:Availability(可用性)
  • P:Partition tolerance(分区容错性)

经典CAP图
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
在这里插入图片描述

因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。(如传统Oracle数据库)
  • CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。(如AP 大多数网站架构的选择
  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。(如 CP Redis、Mongodb)

数据库事务一致性需求

  • 很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低, 有些场合对写一致性要求并不高。允许实现最终一致性。
  • 对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说在微博发一条消息之后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。

Redis安装

以ubantu为例,有两种安装方法

线上安装:

  • 直接输入命令 sudo apt-get install redis-server
    安装完成后,Redis服务器会自动启动。
    • whereis redis 查看redis的安装位置
    • ps -aux | grep redis 查看redis服务的进程运行
    • netstat -nlt | grep 6379 根据redis运行的端口号查看redis服务器状态,端口号前是redis服务监听的IP(默认只有本机IP 127.0.0.1)

安装包安装

  • 下载:打开redis官方网站,推荐下载稳定版本(stable):wget http://download.redis.io/releases/redis-5.0.5.tar.gz
  • 解压tar xzf redis-5.0.5.tar.gz
  • 复制:推荐放到usr/local目录下sudo mv redis-5.0.5 /usr/local/redis
  • 进入redis目录 cd /usr/local/redis/
  • 生成:sudo make失败则 使用 sudo make MALLOC=libc后再sudo make
  • 测试 sudo make test 这段运行时间会较长
  • 安装:将redis的命令安装到/usr/bin/目录sudo make install
  • 运行 redis-server 按ctrl+c停止

前台启动(不推荐)

  • 前台启动,命令行窗口不能关闭,否则服务器停止
    在这里插入图片描述

后台启动

  • 1、备份redis.conf
    拷贝一份redis.conf到其他目录
    cp /opt/redis-3.2.5/redis.conf /myredis

  • 2、后台启动设置daemonize no改成yes
    修改redis.conf(128行)文件将里面的daemonize no 改成 yes,让服务在后台启动

  • 3、Redis 启动
    redis-server/myredis/redis.conf
    在这里插入图片描述

  • 4、用客户端访问:redis-cli
    在这里插入图片描述

  • 5、多个端口可以:redis-cli -p6379

  • 6、测试验证: ping
    在这里插入图片描述

  • 7、 Redis关闭

    • 单实例关闭:redis-cli shutdown
    • 多实例关闭,指定端口关闭:redis-cli -p 6379 shutdown

相关知识介绍

  • 默认 16 个数据库,类似数组下标从 0 开始,初始默认使用0号库
  • 使用命令 select <dbid> 来切换数据库。如: select 8
  • 统一密码管理,所有库同样密码。
  • dbsize 查看当前数据库的key的数量
  • flushdb 清空当前库
  • flushall 通杀全部库
  • 默认端口:6379
  • Redis与Memcache三点不同: 支持多数据类型,支持持久化,单线程+多路IO复用
  • Memocache:使用多线程+锁
  • Redis使用 单线程+多路IO复用技术 该方法可以在更高效率的情况下,实现多线程操作。简单的说,存在一个线程专门进行IO操作(单线程),其他线程需要 IO操作时时,都会交给该线程。这些线程讲需求交给这个单线程后,就异步做自己的事情
    • 如下图,买票所示:
      在这里插入图片描述
      • 黄牛与火车站的关系就是 单线程。person1 ,2,3都将自己的需求交给黄牛,这个过程就是多路复用。在这个过程中,1,2,3可以干自己的事情,直到黄牛通知他票已买好

猜你喜欢

转载自blog.csdn.net/Mr_tianyanxiaobai/article/details/119924838