NoSQL之Redis配置与优化(缓存加速)

一、非关系型数据库产生背景

High performance————对数据库高并发读写需求

Huge Storage———对海量数据高效存储与访问需求

High Scalability && High Availability——对数据库高可扩展性与高可用性需求

二、Redis简介

基于内存运行并支持持久化

采用key-value(键值对)的存储形式

1、优点

速度快: 10W QPS,基于内存,C语言实现

单线程 使用epoll (默认)+I/O多路复用机制

持久化 可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

支持多种数据结构 支持key-value、strings、Lists、Hashes(散列值)、Sets 及ordered Sets等数据类型操作

支持多种编程语言

功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能

简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单

主从复制

支持高可用和分布式

原子性: Redis所有操作都是原子性的,不可分割是一个整体

2、典型应用场景

Session 共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享

缓存:数据查询、电商网站商品信息、新闻内容

计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景

微博/微信社交场合:共同好友,粉丝数,关注,点赞评论等

消息队列:ELK的日志缓存、部分业务的订阅发布系统

地理位置: 基于GEO(地理信息定位),实现摇一摇,附近的人,外卖等功能

三、缓存

1、概念

缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据由于硬盘往往不能在短时间内满足CPU的需求,因此CPU缓存、内存、Raid 卡缓存以及硬盘缓存就在一定程度上满足了CPU的数据需求,即CPU 从缓存读取数据可以大幅提高CPU的工作效率。

2、系统缓存buffer与cache:

buffer:缓冲也叫写缓冲,一般用于写操作,可以将数据先写入内存再写入磁盘,buffer 一般用于写缓冲,用于解决不同介质的速度不一致的缓冲,先将数据临时写入到里自己最近的地方,以提高写入速度,CPU会把数据先写到内存的磁盘缓冲区,然后就认为数据已经写入完成看,然后由内核在后续的时间在写入磁盘,所以服务器突然断电会丢失内存中的部分数据。

cache:缓存也叫读缓存,一般用于读操作,CPU读文件从内存读,如果内存没有就先从硬盘读到内存再读到CPU,将需要频繁读取的数据放在里自己最近的缓存区域,下次读取的时候即可快速读取。

3、缓存保存位置及分层结构

用户层: 浏览器DNS缓存,应用程序DNS缓存,操作系统DNS缓存客户端

代理层: CDN,反向代理缓存

Web层: Web服务器缓存

应用层: 页面静态化

数据层: 分布式缓存,数据库

系统层: 操作系统cache

物理层: 磁盘cache, Raid Cache

3.1、DNS缓存

浏览器的DNS缓存默认为60秒,即60秒之内在访问同一个域名就不在进行DNS解析

3.2、应用层缓存

Nginx、PHP等web服务可以设置应用缓存以加速响应用户请求,另外有些解释性语言,比如:

PHP/Python/Java不能直接运行,需要先编译成字节码,但字节码需要解释器解释为机器码之后才能执

行,因此字节码也是一种缓存,有时候还会出现程序代码上线后字节码没有更新的现象。所以一般上线

新版前,需要先将应用缓存清理,再上线新版。

另外可以利用动态页面静态化技术,加速访问,比如:将访问数据库的数据的动态页面,提前用程序生成静态

页面文件html 电商网站的商品介绍,评论信息非实时数据等皆可利用此技术实现。

3.3、数据层缓存

分布式缓存服务

Redis

Memcached

数据库

MySQL 查询缓存

innodb缓存、MYISAM缓存

3.4、硬件缓存

CPU缓存(L1的数据缓存和L1的指令缓存)、二级缓存、三级缓存

磁盘缓存:Disk Cache

磁盘阵列缓存: Raid Cache,可使用电池防止断电丢失数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值