openstack 基础环境4-Memcache

内存缓存

cpu对各种存储器的访问速度比较:寄存器(ns)>cache(几十ns)>内存(几百ns)>硬盘(ms)

由于硬盘是存储数据持久化的方式,所以数据最终都是存储到硬盘,但是硬盘的速度完全不能满足先如今的需求,这就需要把数据缓存到内存中提高性能

缓存系统可以认为是基于内存的数据库,相对于后端大型生产数据库而言基于内存的缓存数据库能够提供快速的数据访问操作,从而提高客户端的数据请求访问反馈,并降低后端数据库的访问压力

Memcache

memcached 是高性能的分布式内存缓存服务器,一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web 应用的速度、提高可扩展性

  • 不支持数据持久化,系统重启数据丢失
  • 不支持加密方式,需要结合系统防火墙和安全策略
  • 数据以API获取存取,数据经过HASH以key-value的形式存放
  • memcache使用了多线程机制,可以同时处理多个请求(线程数一般设置为CPU核数)
  • 使用LRU(last recently used)最近最少使用算法淘汰数据
  • openstack认证服务使用Memcached缓存令牌

Memcached缓存流程

  1. 检查客户端请求的数据是否在 Memcache 中,如果存在,直接数据返回
  2. 反之,就去数据库查询,把从数据库中获取的数据返回给客户端,同时把数据缓存一份 Memcache 中
  3. 每次更新数据库的同时更新 Memcache 中的数据库(确保数据信息一致性)
  4. 当分配给 Memcache 内存空间用完后,会使用LRU(least Recently Used ,最近最少使用 ) 替换数据

使用Slab分配算法保存数据

Memcache采用的是静态分配方式
在这里插入图片描述

  • Slab: 它是具有相同大小的chunk集合,chunk是最终数据存储的地方
  • Page: 默认大小是1M,page1满了之后,分配page2
  • Chunk: 默认是96B,以后在每个slab中都是根据倍数因子向上递增(默认1.25倍)

Memcache分布式缓存集群

在一台服务器的内存容量无法满足情况下就需要集群多台来提供服务

  • 服务器端并没有分布式功能,memcached 不会互相通信以共享信息

普通的hash算法
一致性hash算法

参考:https://blog.csdn.net/kongqz/article/details/6695417

配置Memcache

安装Memcache及python支持

yum -y install memcached python-memcached

配置管理IP

vi /etc/sysconfig/memcached
OPTIONS="-l 192.168.0.210"

#默认内存换成大小64M,CACHESIZE="64"

启动Memcached服务

systemctl enable memcached.service
systemctl start memcached.service

memcache运行状态

telnet 192.168.0.210 11211
stats

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值