标准协议和字段

Memcached的标准协议字段包含以下部分:

  • 键,key,任意字符,最大250字节,不能有空格和换行
  • 标志位,32比特,不能为0
  • 超时时间,单位是秒,0代表永不超时,最长30天,30天之后,就会出现一个类似于准确的时间戳
  • CAS值,64比特,唯一值,不重复
  • 任意字符,缓存中存储的字节数,也就是字节长度。

CAS值是可选项,通过-c可以禁用,对于一个项目还有其他很多属性值,但是这些属性值client都不会用到,所以也就不太关心了。

No reply不回复

在绝大多数的ASCII命令中,都支持不回复的,但是通常不建议在ASCII中使用这种协议,这样容易造成错误和请求对齐。之所以使用这种不回复的机制,就是为了避免当出现修改操作命令之后需要等待响应回复的等待时间的出现。

在二进制协议中,就是使用这种不回复的机制,如果client支持二进制协议,那就是相当好的。

存储命令

Set:最常用的命令,用来存储数据,修改已经存在的数据,新数据通常放在LRU顶部

Add:存储数据,前提是该数据在memcached中不存在,如果该数据已经在memcached中已经存在,那么add操作是会失败的,但是会将该数据移动到LRU的最顶部。

Replace:当数据存在时,才会去存储替换数据,基本上用不到。

Append:将新数据放在所有数据的最后面,但是不允许超过允许的最大长度,在管理列表时有点作用,该item必须要在memcached中存在,将值添加到原值的后面。

Prepend:和append类似,将新数据放在数据的前面。

Append和prepend实际上是修改键对应的值。

Cas:Check And Set (or Compare And Swap),当距离上一次读去数据之后,该数据备用被更新,才会去存储该数据,

Set设置name为键,12是一个标志位,不能有重复,默认情况下如果通过client去写,不用关心,client会自己定义,不能为0,后面的0是表示永不超时,4代表为设置的值的长度为4,超过4设置就会报错。

当对数据使用set进行修改时,会直接修改所有属性。

Append和prepend修改数据值

Memcached_client.set('name','bobo',time=0)
Memcached_client.add('name1','bobo1',time=0)
Memcached_client.append('name1',' bobo2',time=0)
print(Memcached_client.get('name'))
print(Memcached_client.get('name1'))

检索获取数据

Get:用来检索数据,通过输入键key,memcached返回对应的值,可以同时获取多个键对应的值。

Gets:通过CAS值来检索数据,同时返回给item的CAS值。

 

删除数据

Delete:如果memcached中存在,就删除对应的键值对。

 

排序

如果item对象是一个64位整型存储的,可以通过incr/decr来进行排序,只能对正数进行排序,不能对负数进行排序。

 

超时flush_all

将memcached中的数据全部标记为不可用,通常情况下会跟一个参数,也就是时间,大概多久之后数据失效,这个操作不会影响服务的正常运行,也不会清空cache,只是将这些数据标记为不可用。

 

Memcached安全思考

Memcached作为一个中间件,能加速访问,由于并不带认证,容易受到攻击破环,所以不建议将memcached放在外网或者是所有人都能访问到的地方,如果只是为了加速用户访问,建议放在服务器后面,由服务器去调度memcached,如果memcached和服务安装在同一台服务器上,尽量用127.0.0.1来启动服务。如果是跨主机的通信,建议还是使用防火墙来做限制。

Memcached操作的更多相关文章

  1. php Memcache/Memcached操作手册

    php Memcache/Memcached使用教程 Memcache和Memcached 其实是一个东西,只是php中要是用的扩展不一样, 2009年左右有人丰富memcache的用法和性能,编写了 ...

  2. Memcached操作以及用法

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  3. [Memcached]操作

    telnet连接memcached 查看端口是否可访问 # telnet 172.16.1.1 11211 Trying 172.16.1.1... Connected to 172.16.1.1. ...

  4. CentOS7下安装Mysql和Memcached 以及 使用C#操作Mysql和Memcached

    我本身是学.net的,但是现在很多主流SQL和NOSQL都是部置在linux下,本着好学的精神,前段时间装了个虚拟机,在其装上CentOS64位的服务器系统,对于英文0基础,linux0基础的我来说, ...

  5. Python操作Memcached使用Python-memcached模块

    安装Python的memcached驱动模块 pip install python-memcached 简单的操作示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/ ...

  6. Python Memcached Script

    介绍 利用 python 书写了 memcached 的启动等一类操作 尽量的实现脚本的复用性,以及脚本的可扩展性,已达到一劳永逸的效果, 并且添加了 memcached 监控搭建 memcached ...

  7. Java client 访问 memcached

    在测试项目中引入了memcached作为缓存层,以下是memcached的缓存配置和调用过程. linux下memcached安装过程 直接参考以前的博文linux下安装memcached过程  不再 ...

  8. Memcached应用总结

    Memcached应用总结 memcached是一款高性能的分布式缓存系统,凭借其简单方便的操作,稳定可靠的性能广泛应用于互联网应用中,网上关于memcached介绍的资料也很多,最经典的资料就是&l ...

  9. Memcached 使用与简单监测

    Introduce Memcached作为一个高并发内存Cached系统被很多大公司使用,最近也一直在用Memcached做项目也积累了一些相关经验. 本篇博文主要记录Memcached的一些基本使用 ...

随机推荐

  1. win8.1 AMD 屏幕亮度无法调整

    lenovo z465  AMD处理器. win8.1 pro系统   屏幕亮度无法调整解决办法:   1:当然是先去本地服务里禁用"Sensor Monitoring Service&qu ...

  2. Asp.Net Core 实现谷歌翻译ApI 免费版

    由于谷歌翻译官方API是付费版本,本着免费和开源的精神.分享一下用 Net Core 实现谷歌翻译API的代码. 项目引用的Nuget 包: ChakraCore.NET Newtonsoft.Jso ...

  3. jquery datatable 实例操作

    var dataTables = $(".table").dataTable({ data: d,//为ajax的值,没有直接用插件自带的请求数据方式,个人觉得data的方式好控制 ...

  4. c#实验一:基于winform的冒泡排序练习

    一.界面设计 在排序前textbox中输入数字,以逗号隔开,通过两个button实现降序排序或升序排序,然后在排序后textbox中显示 三个关键点: 1.监测输入是否合法,最好使用正则表达式 2.拆 ...

  5. Django REST framework基础:解析器和渲染器

    解析器 解析器的作用 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据.本质就是对请求体中的数据进行解析. 在了解解析器之前,我们要先知道Accept以及ContentTy ...

  6. syso快捷键设置

    syso快捷键

  7. CMD 和 Git 中的代理设置

    CMD 设置代理 在 cmd 环境下设置代理可能不是很常用,但是某些情况下还是可能会用到,比如公司的电脑只能通过设置代理访问外网,而你需要在 cmd 环境下使用 gem 命令更新文件时. 当然,如果你 ...

  8. 网易云歌词解析(配合audio标签实现本地歌曲播放,歌词同步)

    先看下效果 github上做的一个音乐播放器: https://github.com/SorrowX/electron-music 中文歌曲 英文歌曲(如果有翻译的中文给回返回出去) 韩文歌曲 来看下 ...

  9. 安装Laravel框架,利用composer

    学一学PHP框架--Laravel的设计思想. 先安装Laravel: Laravel的文档很全:参考 http://www.golaravel.com/ 既然文档很全,就简单说下几个重点.以下以安装 ...

  10. 【原创】分布式事务之TCC事务模型

    引言 在上篇文章<老生常谈--利用消息队列处理分布式事务>一文中留了一个坑,今天来填坑.如下图所示 如果服务A和服务B之间是同步调用,比如服务C需要按流程调服务A和服务B,服务A和服务B要 ...