30 企业级 NoSQL数据库Redis
企业级 NoSQL 数据库 Redis
内容概述:缓存技术 、Redis 部署 、Redis 使用 、Redis 数据类型 、Redis 主从复制 、Redis Sentinel、 Redis Cluster
1 缓存技术
缓存cache 是为了调节速度不一致的两个或多个不同的物质的速度,置于中间,可以实现速度较快的一方 加速访问速度较慢的一方的作用,比如CPU的一级、二级缓存是保存了CPU近经常访问的数据,内存 是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓 存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据由于硬盘往 往不能在短时间内满足CPU的需求,因此CPU缓存、内存、Raid 卡缓存以及硬盘缓存就在一定程度上满 足了CPU的数据需求,即CPU 从缓存读取数据,从而可以大幅提高CPU的工作效率。
1.1 缓存 cache
1.1.1 buffer与cache
#1 buffer
缓冲,也叫写缓冲,一般用于写操作,可以将数据先写入内存在写入磁盘,buffer 一般用于写缓冲,用于 解决不同介质的速度不一致的缓冲,先将数据临时写入到离自己近的地方,以提高写入速度
通常应用保存数据时,CPU会先把数据先写到内存的磁盘缓冲区,然后应用就认为数据已经写入完成,从 而提高应用的写入速度,然后由内核在后续的时间再写入磁盘,所以服务器突然断电会丢失内存中的部分 数据。
buffer提升了效率,但是有可能存在数据丢失的风险!
buffer缓存就是写入的数据,如果数据量大的时候,可能还没写完,这边就执行清理缓存,那数据就有可能来不及写入,导致数据丢失。
#2 cache
缓存,也叫读缓存,一般用于读操作,CPU读文件时先从内存读,如果内存没有,就从硬盘读到内存再读到 CPU,将需要频繁读取的数据放在离自己近的缓存区域,下次读取的时候即可快速读取。
#3 缓存清理
执行完#echo 3 > /proc/sys/vm/drop_caches ,缓存马上变小
free -h dd if=/dev/sda of=/dev/null free -h echo 3 > /proc/sys/vm/drop_caches free -h
一般来说,缓存是提高性能的,非必须不建议清理缓存
如果因为是应用有像内存泄露、溢出的问题时,从swap的使用情况是可以比较快速可以判断的,但通过 执行free 反而比较难查看。内核并不会因为内存泄露等问题,而清空buffer或cache(drop_caches默认 值是0),生产也不应该随便去改变drop_caches值。