redis 1.NOSQL、CAP理论、redis单节点安装启动、redis密码设置、redis单线程+多路IO复用技术

前言

只要学不死,就往死里学!
链接:redis学习
提取码:1256

附:
链接:xshell和xftp
提取码:1256


一.NoSql

1.背景

1.1 mysql的演变

(1) 单机Mysql数据的瓶颈
  数据量大, 单个机器不能满足需求;访问量(读写混合)一个实例不能承受
(2) Memcached+mysql+垂直拆分
(3) mysql主从读写分离
(4) 分表分库 水平拆分 mysql集群

存在瓶颈:
  MySQL的扩展性差(需要复杂的技术来实现),大数据下IO压力大,表结构更改困难。

1.2 NoSQL数据库应运而生

  伴随互联网的发展,智能移动设备的普及,用户访问量和用户数据激增,所有的互联网平台面临性能挑战,急需解决CPU、内存、IO的压力。
  有2个典型场景应用nosql数据库:

(1)集群中,用户登录后,共享session的存储问题:
  使用缓存数据库存储session,基于内存存储,速度快且数据结构简单;
(2)频繁查询的数据放入缓存中:
  使用缓存数据库,最重要的一点打破了传统关系型数据库以业务逻辑为导向的存储模式,而是针对不同数据结构改为以性能为先的存储模式;


2.nosql数据库概述

2.1 概念

  NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储,因此大大的增加了数据库的扩展能力。

    不遵循SQL标准
    不支持ACID
    远超于SQL的性能

2.2 nosql的使用

(1).NoSQL适用场景
    对数据高并发的读写(秒杀功能)
    海量数据的读写
(2).NoSQL不适用场景
    需要事务支持
    基于sql的结构化查询存储,处理复杂的关系,需要即席查询

2.3 RDBMS vs NoSQL

RDBMSNoSQL
数据高度组织化结构化;支持结构化查询语言(SQL);数据和关系存储在单独的表中;支持数据操纵语言和数据定义语言;严格的一致性;支持事务代表着不仅仅是SQL;没有声明性查询语言; 没有预定义的模式;键 - 值对存储,列存储,文档存储,图形数据库;支持最终一致性,而非ACID属性;数据非结构化和不可预知;CAP定理;高性能,高可用性和可伸缩性

3.根据数据模型对nosql分类

在这里插入图片描述


4.CAP

CAP包含三部分内容:
一致性(Consistency) 、可用性(Availability) 、分区容错性(Partition tolerance)
在这里插入图片描述
  一致性:对于客户端的每次读操作,要么读到的是最新的数据,要么读取失败。即,一致性是站在分布式系统的角度,对访问本系统的客户端的一种承诺:要么返回一个错误,要么返回绝对一致的最新数据,强调的是数据正确

  可用性: 任何客户端的请求都能得到响应数据,不会出现响应错误。即,可用性是站在分布式系统的角度,对访问本系统的客户的另一种承诺:一定返回数据,不会返回错误,但不保证数据最新,强调的是服务可用
  分区容错性:由于分布式系统通过网络进行通信,网络是不可靠的。当任意数量的消息丢失或延迟到达时,系统仍会继续提供服务,不会挂掉。即,分区容忍性是站在分布式系统的角度,对访问本系统的客户端的再一种承诺:不管内部出现何种数据同步问题,系统始终在线,强调的是不挂掉

  CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个


二.Redis概述和安装

2.1 概述

2.1.1 简介

redis(remote dictionary server 远程字典服务器)
官网
中文官网

  redis基于内存且支持数据的持久化;
  redis单线程运行,省去线程上下文切换带来的性能开销,效率高;
  redis支持的数据类型丰富,字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) , bitmaps, hyperloglogs 和 地理空间(geospatial) ;
  通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(high availability)

2.1.2 作用和应用

(1) 配合关系型数据库做高速缓存;
  需要注意缓存穿透、缓存击穿、缓存雪崩问题

(2) 多样的数据结构存储持久化数据;
  最新的N个数据(通过List实现按自然时间排序的数据)
  排行榜,Top N(利用zset有序集合)
  时效性数据,如手机验证码(expire过期时间)
  秒杀系统(原子性 watch multi discard exec ,自增方法incrby、decrby)
  爬虫系统,url去重(利用set集合)
  构建队列(利用list集合)
  发布订阅消息系统(pub/sub)

2.2 安装

2.2.1 点击链接下载redis所需的版本

下载安装包
在这里插入图片描述

2.2.2 编译安装redis

1)安装C 语言的编译环境:

yum -y install gcc tcl –y

查看gcc版本

gcc --version

在这里插入图片描述

2)上传下载的源码包到/opt目录下解压缩

tar -zxvf redis-6.2.1.tar.gz

3)在redis-6.2.1目录下执行make命令

make 

在这里插入图片描述
4)跳过make test 继续执行: make install

make install

2.2.3 安装目录:/usr/local/bin (用户自行编译安装时默认的可执行程序的安装位置)

  redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
  redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
  redis-check-dump:修复有问题的dump.rdb文件
  redis-sentinel:Redis集群使用
  redis-server:Redis服务器启动命令
  redis-cli:客户端,操作入口

2.3 redis启动(后台启动)和关闭

2.3.1 启动

备份redis.conf
在这里插入图片描述
后台启动设置daemonize no改成yes
在这里插入图片描述

Redis启动

redis-server /opt/redis-6.2.1/redis.conf

在这里插入图片描述
用客户端访问

redis-cli

2.3.2 关闭redis

单实例或多实例关闭:
  redis-cli进入客户端,再输入 shutdown

在这里插入图片描述

2.3.3 redis密码设置

修改redis的配置文件—redis.conf,找到requirepass,注释去掉,并将后面的字段设置成密码,保存退出:
在这里插入图片描述
在这里插入图片描述
重启redis服务:
在这里插入图片描述

客户端连接redis,解密后才允许操作:
在这里插入图片描述

三.redis有关知识

3.1 数据库命令

默认端口6379,默认16个数据库,类似数组下标从0开始,初始默认使用0号库。

  使用命令 select <dbid>来切换数据库
在这里插入图片描述

  dbsize 查看当前数据库的key的数量
在这里插入图片描述

  flushdb 清空当前库
在这里插入图片描述

  flushall 清空全部库

3.2 单线程+多路IO复用技术

  多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态(调用select, epoll, evport, kqueue函数),传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可在同一个线程里执行,也可启动线程执行(如使用线程池)

memcachedRedis
多线程+锁单线程+多路IO复用

在这里插入图片描述

如:epoll机制
  客户端操作服务器时就会产生这三种文件描述符(简称fd):writefds(写)、readfds(读)、和exceptfds(异常)。没有fd个数限制,用户态拷贝到内核态只需要一次,使用时间通知机制来触发。通过epoll_ctl注册fd,一旦fd就绪就会通过callback回调机制来激活对应fd,进行相关的io操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

但行益事莫问前程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值