高并发必备两大核心技术队列和缓存
什么是队列(MQ消息中间件 ):全程MessageQueue,主要是用于程序和程序直接通讯。异步+解耦。
使用场景:解耦,异步,削峰。
什么是缓冲:程序经常要调用的对象存在内存中,方便其使用时可以快速调用,不必去数据库或者其他持久化设备中查询。主要就是提高性能DNS缓存,前端缓存,代理服务器缓存Nignx,应用程序缓存,数据库缓存。
本地缓存和分布式缓存
分布式缓存:与应用分类的缓存组件或服务,与本地应用隔离一个独立的应用,多个应用可直接的共享缓存,常见的分布式缓存有Redis,Memcached等。
本地缓存:和业务程序一起的缓存,例如mybatis的一级或者二级缓存,本地缓存自然是最快的,但是不能再多个节点共享。
常见的本地缓存:
- mybatis一级缓存,二级缓存
- 框架本身的缓存
- redis本地单机服务
- ehchche
- guava cache
- Caffeine
我们去选择本地缓存和分布式缓存:主要是去结合业务数据去选择,高并发项目里面一般都是有本地缓存和分布式缓存共同存在的。
热点key的解决方案之一:避免带宽或者传输影响,本地缓存热点key数据,对于每次读请求,将首先检查key是否存在本地缓存中,如果存在则直接返回,如果不存在再去访问分布式缓存的机器。缓存中的某些key对应的value存储在集群中一台机器,使得所以流量涌向同一机器,成为系统的瓶颈,无法通过增加机器容量来解决。
NoSql和Redis快速介绍
NOSQL,是不同于传统的关系数据库的数据库管理系统的统称,其两者最重要的区别是NOSQL不使用SQL作为查询语言。Nosql数据存储可以不需要固定的表格模式。以键值对存储,列存储,文档存储,图形数据库。
常见的Nosql数据库:redis,memcached,mongodb,hbase
Redis官方地址:https://redis.io/,中文地址:https://redis.cn/。
Redis是一个开源的使用ANSI C语言编写,遵循BSD协议,支持网络,可基于内存,分布式,可选持性的键值对(Key-Value)存储数据库,并提供多种语言的API。
高性能:Redis读的速度为110000次/s,写的速度81000次/s。
内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件。它支持多种类型的数据结构,如字符串(String),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)等。
Redis主要特性:aof/rdb,高性能的原因,key设计,热点key,淘汰算法
Redis可以实现的功能:排行榜,购物车,社交关系(粉丝,关注),Feed流,附加的商家,分布式锁等等
源码安装Redis
#安装gcc
yum install -y gcc-c++ autoconf automake
#centos7 默认的 gcc 默认是4.8.5,版本小于 5.3 无法编译,需要先安装gcc新版才能编译
gcc -v
#升级新版gcc,配置永久生效
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
#编译redis
cd redis
make
#安装到指定目录
mkdir -p /usr/local/redis
make PREFIX=/usr/local/redis install
容器版安装Redis
docker run -itd --name redis -p 6379:6379 --restart=always redis:7.0 --requirepass 123456
-i 以交互模式运行容器,通常与-t 同时使用。
-d 后台运行容器,并返回容器ID。

903

被折叠的 条评论
为什么被折叠?



