标准协议和字段

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. Ehcache入门经典:第一篇

    ehcache主要是轻量级的缓存实现 ehcache.xml <?xml version="1.0" encoding="UTF-8"?> < ...

  2. sql server 错误日志errorlog

    一 .概述 SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应用程序日志中. 这两种日志都会自动给所有记录事件加上时间戳 ...

  3. 【eclipse】mybatis配置文件创建与mapper接口文件创建

    什么是mybatis: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. mybatis配置文件: <?xml version="1.0" ...

  4. 炫龙炎魔T1笔记本 Win7 系统安装

    系统链接:https://pan.baidu.com/s/1T5FdJf1jhTj78vEBYCXxyA 密码:rl7m 1.制作系统盘(下载文件中有教程),插好U盘,重启计算机 2.按F2进入BOS ...

  5. Python爬虫之pyquery库的基本使用

    # 字符串初始化 html = ''' <div> <ul> <li class = "item-0">first item</li> ...

  6. Think_in_java_4th(并发学习二)

    使用Executor java.util.concurrent CachedThreadPool package concurrency.ExecutorService; //: concurrenc ...

  7. 6.2Python数据处理篇之pandas学习系列(二)Series数据类型

    目录 目录 (一)Series的组成 (二)Series的创建 1.从标量中创建Series数据 2.从列表中创建Series数据 3.从字典中创建Series数据 4.从ndarry中创建Serie ...

  8. LOJ #2542. 「PKUWC 2018」随机游走(最值反演 + 树上期望dp + FMT)

    写在这道题前面 : 网上的一些题解都不讲那个系数是怎么推得真的不良心 TAT (不是每个人都有那么厉害啊 , 我好菜啊) 而且 LOJ 过的代码千篇一律 ... 那个系数根本看不出来是什么啊 TAT ...

  9. 在windows下远程访问linux桌面

    一.安装xrdp工具: #  yum install xrdp #   yum install tigervnc-server #   service xrdp start 以上三个命令执行完毕安装完 ...

  10. golang web实战之一(beego,mvc postgresql)

    想写个小网站,听说MVC过时了,流行MVVM,但是看了一下gin+vue+axios方式,发现还有一堆知识点要掌握,尤其是不喜欢nodejs和javascript方式的写法.算了,还是用beego来写 ...