1.Memcached常用命令总结

Memcached命令格式一般为:

command

其中描述如下:

参数 描述
command 操作命令,一般为set/add/replace/get/delete等
key 缓存的key,Memcache内部限制不能超过250个字符,
flag 标识数据格式,比如JSON、XML等
expiration time 过期时间,单位为s,0为不过期,最好设置过期时间,以免保存大量无效数据,最大过期时间为30天,超过30天则缓存获取不到
bytes 字节数,比如1234,则字节数为4
value 缓存中的值

比如以下命令:

set name 0 0 4 test// key 为name,value为test,字节数4个,缓存不过期

常用命令列表如下:

命令 描述
set 添加或者更新
get 获取数据
add 数据不存在的时候添加
replace 数据存在的时候替换value的值
append 后面追加
prepend 前面追加

2.Memcached主要特征

1.协议简单

server和client的通信并不使用复杂的XML或者json协议,而是使用简单的文本协议和二进制协议

2.内置内存存储方式

Memcached是纯内存存储,不支持持久化,因此当Memcached重启或者机器重启的时候所有数据会丢失。

因此会存在数据重启无法恢复的问题

3.Memcached使用客户端分布式

Memcached服务端没有分布式的功能,各个实例之间并不会互相通信或者数据共享,因此需要依赖客户端实现分布式。

3.Memcached存在的问题

1.因此会存在数据重启无法恢复的问题  

可以通过配合持久化数据库MemcachedDB使用  

2.无法通过key做范围查询

3.没有提供高可用相关支持,只能通过客户端逻辑来处理,比如写入的时候同时写入主备服务器

4.Memcached内存存储分析

Memcached使用Slab Allocator机制分配和管理内存,这种分配机制可以减少内存碎片的产生,减轻系统管理内存的负担。

Slab Allocator的分配机制其实很简单,就是将内存分割成各种尺寸的内存快(Chunk)并将尺寸相同的内存块分组Slab Class。其中分配的快可以重新利用,不会释放到内存中。

其中分配给Slab Class的内存空间为Page(默认大小为1MB)。

内存分配结构大致如下:

分配的内存快大小目前默认最小内存块为:88Bytes,Growth Factor决定了内存块增长的幅度,默认值为1.25,可以通过启动参数配置。

这种分配方式在一定程度上也会造成内存的浪费,比如要保存100字节的数据的时候,只能放到112Bytes的内存块中,剩余的12Byte内存空间被浪费。

结构中各个部分数量的计算:

Page个数 = 内存总空间 / 1MB
各个Page中Chunk的个数 = 1MB / Chunk的大小
Chunk大小计算 = 初始值 * Growth Factor

当设置缓存的时候,会根据Item的大小来决定保存到那个Slab Class中,其中Item大小为:

key长 + value长度 + 后缀长度 + item长度大小(32个字节)

其中Memcached可以保存的数据Item最大为1MB。

5.Memcached典型问题分析

对于Memcached的使用中一般会出现以下问题:

1. 容量问题
单一节点无法突破内存上限
2. 服务高可用
服务宕机会导致访问全部穿透数据库
3. 扩展问题
无法突破单实例请求峰值

Memcached当达到内存上线的时候,会对内存数据进行垃圾回收,垃圾回收有两种方式:

1.Lazy模式,Memcached不会自动去检查数据的过期情况,而是在查询的时候,检查数据的过期情况,然后对数据进行相应处理。
2.使用LRU算法进行内存垃圾回收(最近最少使用算法)
其中垃圾回收是在Slab Class范围内的,并不是全局的LRU

对于Memcached使用集群的方式,有两种算法来计算缓存落在那一台缓存机器。

方法一: key.hashCode() / 缓存节点个数
缺点:当对分布式缓存中添加、删除或者节点故障剔除操作中,会导致所有的历史数据都无法找到
方法二:使用一致性哈希算法可以解决1中的问题
数据一致性问题怎么解决
key冲突的问题解决

可以使用明明空间,对于不同的系统,使用不同的明明空间,比如前缀:ns_

Memcached相关内容总结的更多相关文章

  1. linux用户权限相关内容查看

    linux用户权限相关内容查看 1   用户信息 创建用户一个名为 webuser 的账号,并填写相应的信息: root@iZ94fabhqhuZ:~# adduser webuser Adding ...

  2. SharePoint安全 - 在Goolge和Bing中查找SharePoint相关内容

    博客地址 http://blog.csdn.net/foxdave 本篇提供两个查询串字典,分别对应Google和Bing的搜索,用来查询SharePoint网站的相关内容 Google ShareP ...

  3. 韩顺平细说Servlet视频系列之tom相关内容

    韩顺平细说Servlet视频系列之tom相关内容 tomcat部署项目操作(注意:6.0版本以后的支持该操作,5.x版本需要另外配置?待验证!) 项目发布到tomcat的webapps文件下,然后启动 ...

  4. jQuery实现页内查找相关内容

    当需要在页面中查找某个关键字时,一是可以通过浏览器的查找功能实现,二是可以通过前端脚本准确查找定位,本文介绍通过jQuery实现的页面内容查找定位的功能,并可扩展显示查找后的相关信息. 本文以查找车站 ...

  5. Struts2(四)——页面相关内容

    上篇博客总结了数据流转各个方面的内容,这篇重点说一下框架对于界面上知识. 一,说到页面,记得在总体介绍中,说到Struts2比Struts1的一方面优势就是它支持更多的视图技术(Freemarker, ...

  6. 学习笔记之html5相关内容

    写一下昨天学习的html5的相关内容,首先谈下初次接触html5的感受.以前总是听说html5是如何的强大,如何的将要改变世界.总是充满了神秘感.首先来谈一下我接触的第一个属性是  input的里面的 ...

  7. 基于KNN的相关内容推荐

    如果做网站的内容运营,相关内容推荐可以帮助用户更快地寻找和发现感兴趣的信息,从而提升网站内容浏览的流畅性,进而提升网站的价值转化.相关内容 推荐最常见的两块就是“关联推荐”和“相关内容推荐”,关联推荐 ...

  8. 第一天上午——HTML网页基础知识以及相关内容

    今天上午学习了HTML基础知识以及相关内容,还有DW的基本使用方法. HTML(HyperText Markup Language):超文本标记语言,超文本:网页中除了包含文本文字之外,还包含了图片, ...

  9. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

随机推荐

  1. zabbix-2.2.2(Ubuntu 14.04 LTS/OpenLogic 7.2)

    平台: arm 类型: ARM 模板 软件包: apache-2.4.7 mariadb-5.5.50 mysql-5.5.52-0ubuntu0.14.04.1 php-5.4.16 php-5.5 ...

  2. Array负载均衡控制器(vAPV)

    平台: freebsd 类型: 虚拟机镜像 软件包: apache python basic software load balance network infrastructure slb ssl ...

  3. EF中Entity SQL用法

    public List<policecase> GetPoliceCaseList(PoliceCaseFilter view)        {            string sq ...

  4. xtrabackup支持的engine

    xtrabackup支持的engine 1.InnoDB/XtraDB Hot backup   2.MyISAM with read-lock   3.Archive,CSV with read-l ...

  5. Drupal相关网站推荐

    http://nodeone.se/ drupal7安装过程中,如果选择简体中文,到导入翻译时出现错误,原因是执行超时了. 方法一: 修改php.ini文件:memory_limit = 256M ( ...

  6. Excel自动从身份证中提取生日、性别、年龄

    现在学生的身份证号已经全部都是18位的新一代身份证了,里面的数字都是有规律的.前6位数字是户籍所在地的代码,7-14位就是出生日期.第17位“2”代表的是性别,偶数为女性,奇数为男性.我们要做的就是把 ...

  7. c++ 程序设计question 001:我们的开发工具是什么?

    我们使用的开发工具是dev cpp (c plus plus),这是一个集成开发环境,我们称之为IDE(integrated development environment)

  8. Mysql之1451 - Cannot delete or update a parent row: a foreign key constraint fails...解决办法记录

    今天使用delete语句删除一张表中的一条信息时,提示了这么一个错误:1451 - Cannot delete or update a parent row: a foreign key constr ...

  9. 用随机森林分类器和GBDT进行特征筛选

    一.决策树(类型.节点特征选择的算法原理.优缺点.随机森林算法产生的背景) 1.分类树和回归树 由目标变量是离散的还是连续的来决定的:目标变量是离散的,选择分类树:反之(目标变量是连续的,但自变量可以 ...

  10. python3 提成计算

    题目 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万到4 ...