Nginx与Redis

本文介绍了Nginx的正向代理、反向代理、负载均衡和动静分离功能,以及Redis的五大数据类型和分布式配置。Nginx作为高效的反向代理服务器,能实现负载均衡和动静分离,提升网站性能。Redis则是一个高性能的Key-Value数据库,支持多种数据结构,常用于数据缓存。Redis的主从同步和哨兵模式确保了数据的高可用性。

Nginx

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

正向代理

Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

反向代理

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。

负载均衡

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负 载均衡

客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服 务器处理完毕后,再将结果返回给客户端。

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速 度。降低原来单个服务器的压力。

                                  
 Redis

    REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。

    Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

    Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

特性:

1、基于内存运行,性能高效   

2、支持分布式,理论上可以无限扩展

3、开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

Redis的五大数据类型

    String类型:

    它是一个二进制安全的字符串,意味着它不仅能够存储字符串、还能存储图片、视频等多种类型, 最大长度支持512M。

    对每种数据类型,Redis都提供了丰富的操作命令,如:

        GET/MGET
        SET/SETEX/MSET/MSETNX
        INCR/DECR
        GETSET
        DEL

    哈希类型:

    该类型是由field和关联的value组成的map。其中,field和value都是字符串类型的。

    Hash的操作命令如下:

        HGET/HMGET/HGETALL
        HSET/HMSET/HSETNX
        HEXISTS/HLEN
        HKEYS/HDEL
        HVALS

    列表类型:

    该类型是一个插入顺序排序的字符串元素集合, 基于双链表实现。

    List的操作命令如下:

        LPUSH/LPUSHX/LPOP/RPUSH/RPUSHX/RPOP/LINSERT/LSET
        LINDEX/LRANGE
        LLEN/LTRIM

    集合类型:

    Set类型是一种无顺序集合, 它和List类型最大的区别是:集合中的元素没有顺序, 且元素是唯一的。

    Set类型的底层是通过哈希表实现的,其操作命令为:

        SADD/SPOP/SMOVE/SCARD
        SINTER/SDIFF/SDIFFSTORE/SUNION

    Set类型主要应用于:在某些场景,如社交场景中,通过交集、并集和差集运算,通过Set类型可以非常方便地查找共同好友、共同关注和共同偏好等社交关系。

    顺序集合类型:

    ZSet是一种有序集合类型,每个元素都会关联一个double类型的分数权值,通过这个权值来为集合中的成员进行从小到大的排序。与Set类型一样,其底层也是通过哈希表实现的。

redis分布式与主从配置

主从同步

1、master为主,slave为从,一般只有一个master

2、Master可读可写,Slaver只读不写

3、当master挂掉时,可以通过slave of no one命令将Slaver升级为Master,手动方式

4、可以通过sentinel哨兵模式监控Master,当Master挂掉时自动选举Slaver变为Master,其它Slaver自动重连新的 Master

5、Master写入后立即返回,几乎同时将写入异步同步到各个Slaver,所以基本上延迟可以忽略

哨兵模式

哨兵的作用就是监控redis主、从数据库是否正常运行,主出现故障自动将从数据库转换为主数据库。(哨兵是一个单独的进程)

新的主刚被选出来,老的主恢复,这时老的主会变为新的从

新的主被选出来一会一会老的主才回复,不会变为新主的从节点,而是一个独立的节点。(当然可以通过哨兵的配置文件修改为从节点)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值