WEB架构之缓存-Buffer与Cache(01)

备注:它们都是解决速度不一致的问题,都涉及到IO操作。

1.1 Buffer

一般用于写操作,可以称之为写缓冲。用于解决不同介质直接存储速度的不同,将数据写入到比自己相对慢的不是很多的中间区域就返回,然后最终再写入到目标地址,提高写入性能。缓冲也可以有多级。

1.2 Cache

一般用户读操作,可以称之为读缓存。用于将频繁读取的内容放入缓存,下次再读取相同的内容,直接从缓存中读取,提高读取性能,缓存可以有多级。

1.2.1 Cache存放的位置

  1. 客户端(浏览器缓存)
  2. 内存(本机内存、远程服务器内存)
  3. 硬盘(本机硬盘、远程服务器硬盘)

1.2.2 Cache的几个重要指标

  • Cache过期时间:TTL
  • Cache过期检查、强制过期
  • Cache命中率(重点): 一个完全没有命中率的cache没有意义

1.3 内存文件存储之tmpfs

1.3.1 tmpfs解析

  • 原始内存使用状态:
[root@linux-node1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        47G  1.9G   46G   5% /
/dev/sda1      1014M  132M  883M  13% /boot
tmpfs            98M     0   98M   0% /run/user/0
[root@linux-node1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         210         668           7          93         641
Swap:          2047           0        2047
  • 在/dev/shm/写入81M内容后的内存状态:
[root@linux-node1 shm]# dd if=/dev/zero /dev/shm/of=temp count=81 size=1M
[root@linux-node1 shm]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M   81M  406M  17% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        47G  1.9G   46G   5% /
/dev/sda1      1014M  132M  883M  13% /boot
tmpfs            98M     0   98M   0% /run/user/0
[root@linux-node1 shm]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         210         586          88         174         560
Swap:          2047           0        2047
  • 内存状态解析:
  1. 原始状态时内存的available为641M,写入状态时内存available为560M,641M-560M=81M,证明我们放置的81M的文件是使用了内存空间。
  2. 原始状态时内存的shared为7M,写入状态时内存shared为88M,88M-7M=81M,证明/dev/shm是Linux给共享内存使用的。

1.3.2 tmpfs使用

  • 挂载tmpfs(默认挂载大小为物理内存的一半):
[root@linux-node1 ~]# mount -t tmpfs tmpfs /mnt/tmp
[root@linux-node1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        47G  1.9G   46G   5% /
/dev/sda1      1014M  132M  883M  13% /boot
tmpfs            98M     0   98M   0% /run/user/0
tmpfs           487M     0  487M   0% /mnt/tmp
  • 指定空间大小挂载tmpfs:
[root@linux-node1 ~]# mount -t tmpfs -o size=1G tmpgs /mnt/tmp
[root@linux-node1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        47G  1.9G   46G   5% /
/dev/sda1      1014M  132M  883M  13% /boot
tmpfs            98M     0   98M   0% /run/user/0
tmpgs           1.0G     0  1.0G   0% /mnt/tmp
  • 重新挂载tmpfs:
[root@linux-node1 ~]# mount -o remount,size=512M /mnt/tmp
[root@linux-node1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        47G  1.9G   46G   5% /
/dev/sda1      1014M  132M  883M  13% /boot
tmpfs            98M     0   98M   0% /run/user/0
tmpgs           512M     0  512M   0% /mnt/tmp

1.3.3 tmpfs优势

  1. 存储空间的设置和动态变化
  2. 速度快
  3. 没有持久性

1.3.4 tmpfs应用场景

  1. 反向代理缓存中,缓存目录使用tmpfs
  2. 将php的session文件放在tmpfs下
  3. 将服务的socket文件放在tmpfs下
  4. 根据业务需要,需要临时存储并且高性能读写的目录
温馨提示:本文最后更新于2022-12-20 20:57:40,已超过431天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/2044.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享