Nosql之redis配置与优化

一、redis

1、什么是缓存

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

2、系统缓存

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

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

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

互联网应用领域,提到缓存为王

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

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

- Web层: Web服务器缓存

- 应用层: 页面静态化

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

- 系统层: 操作系统cache

- 物理层: 磁盘cache, Raid Cache

4、DNS缓存

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

 5、应用层缓存

Nginx、PHP等web服务可以设置应用缓存以加速响应用户请求,另外有些解释性语言,比如:PHP/Python/Java不能直接运行,需要先编译成字节码,但字节码需要解释器解释为机器码之后才能执行,因此字节码也是一种缓存,有时候还会出现程序代码上线后字节码没有更新的现象。所以一般上线

新版前,需要先将应用缓存清理,再上线新版。另外可以利用动态页面静态化技术,加速访问,比如:将访问数据库的数据的动态页面,提前用程序生成静态

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

6、数据层缓存

分布式缓存服务

---Redis

---Memcached

数据库

---MySQL 查询缓存

---innodb缓存、MYISAM缓存

6、硬件缓存

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

磁盘缓存:Disk Cache

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

二、关系数据库与非关系型数据库

1、关系型数据库

·—个结构化的数据库,创建在关系模型基础上

·—般面向于记录

·包括:Oracle、MySQL、SQL Server、Microsoft Access、DB2等

2、非关系型数据库

·除了主流的关系型数据库外的数据库,都认为是非关系型

包括:Redis、MongBD、Hbase、CouhDB等

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

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

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

·High Scalability && High Availability-对数据库高

可扩展性与高可用性需求

4、关系数据库与非关系型数据库的对比

你可能感兴趣的:(redis,缓存,nosql,mysql,linux)