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_

转载于:https://www.cnblogs.com/vitasyuan/p/9463400.html

Memcached相关内容总结相关推荐

  1. iOS 发布APP关于IDFA的相关内容

    您的 App 正在使用广告标识符 (IDFA).您必须先提供关于 IDFA 的使用信息或将其从 App 中移除,然后再上传您的二进制文件. 如果出现下边这两张图,你就会感到蛋蛋的忧伤 还有这个 怎么解 ...

  2. golang实践LSM相关内容

    LSM LSM(log-structured merge-tree)是一种分层,有序,面向磁盘的数据结构,其核心思想是充分了利用了,磁盘批量的顺序写要远比随机写性能高出很多,在计算机科学中,日志结构的 ...

  3. Assembly--及相关内容

    Assembly--及相关内容 0.2672019.06.04 09:29:26字数 448阅读 88 De novo genome assembly Hybrid error correction ...

  4. Android开发环境——Eclipse ADT相关内容汇总

     Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关 ...

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

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

  6. 【SeeMusic】创建 SeeMusic 工程并编辑相关内容 ( 创建工程 | 导入 MIDI 文件 | 导入音频 | 导入视频 )

    SeeMusic 系列文章目录 [SeeMusic]下载安装并注册 SeeMusic 软件 [SeeMusic]创建 SeeMusic 工程并编辑相关内容 ( 创建工程 | 导入 MIDI 文件 | ...

  7. Android开发环境——模拟器AVD相关内容汇总

    Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关内 ...

  8. DCMTK:OFpath和相关内容的测试程序

    DCMTK:OFpath和相关内容的测试程序 OFpath和相关内容的测试程序 OFpath和相关内容的测试程序 #include "dcmtk/config/osconfig.h" ...

  9. android Wifi开发相关内容

    今天,简单讲讲android里如何使用WifiManager. 之前,我看代码时,看到了wifi相关的代码,发现自己对于这个内容的使用还很不熟悉,所以在网上查找资料,最终解决了问题.这里记录一下. 移 ...

最新文章

  1. (0009) iOS 开发之友盟统计分析SDK已全面支持HTTPS的更新
  2. 深入分析 java 8 编程语言规范:Threads and Locks
  3. java tomcat 时间不对解决办法
  4. java 矩形重叠问题_两个矩形重叠的问题
  5. redis缓存穿透、缓存击穿、缓存雪崩概念及解决方案
  6. JDK API实践:Spring怎样取舍Java I-O、集合、反射、动态代理等API的使用
  7. 最穷的日子,你是如何熬过来的?
  8. ppt变成了图片不能编辑文字怎么办_谁说水印一定要去掉?用到PPT里贼好看好吗!...
  9. 玩转二叉树 (25 分) 知中序遍历和前序遍历,求做个镜面反转后的层序遍历
  10. POJ 1862 amp; ZOJ 1543 Stripies(贪心 | 优先队列)
  11. coreboot学习2:项目源码的初步了解
  12. 利用URL重写跟踪Session(多学一招)
  13. All Roads Lead to Rome (30)
  14. Java学习手册:Java面向对象面试问题
  15. 现在主流开源分布式系统架构都有哪些?
  16. 4309 消灭老鼠(哈希表存储一个向量表示一条直线)
  17. 关于小程序 scroll
  18. Mac全自动安装brew一键配置国内镜像源
  19. /tmp/ccAceHhY.o: In function `main': main.c:(.text+0xc7): undefined reference to `dlopen' main.c:
  20. 知了 | 基于NLP的智能问答推荐系统

热门文章

  1. Linux中find命令详解
  2. Parsing XML in J2ME
  3. Linq to sql 消除列重复 去重复
  4. PHP程序员如何突破技术瓶颈
  5. 关于java数组拷贝的性能
  6. 32/100. Binary Tree Inorder Traversal
  7. PHP 入门 - 4.正则表达式
  8. Python 下的 tcp server/client 通信
  9. Xcode9学习笔记63 - 使用SystemSoundId播放简短声音(太长的无法播放)
  10. 【bzoj1726/Usaco2006 Nov】Roadblocks第二短路——SPFA