• Memcached学习笔记之二:Memcached存储命令(set,add,replace,append,prepend,cas)


    Memcached 的存储命令包括:set 、add 、replace 、append 、prepend 、cas 。

    主要是用于向memcached服务器上添加缓存数据,几个命令的语法及其参数基本一致。

    首先来了解下命令格式及其含义: 以set命令为例

    set key flags exptime bytes [noreply]

    value

    第一行:set key flags exptime bytes [noreply]

    set : 命令
    key:key 用于查找缓存值
    flags:一个32位的标志值,客户机使用它存储关于键值对的额外信息(譬如用户规定1-json , 2-xml )用户自己的业务标记使用场景 ,比如, 我可以设置为1缓存的是网页的热点,2缓存的是app的热点。
    exptime :在缓存中保存键值对的时长(以秒为单位,0表示永远)(服务器挂了数据没了 最多30天时间,因为memcached没有提供持久化的功能)
    bytes:在缓存中存储的字节数(与存储的值不对应CLIENT_ERROR bad data chunk)存储的字节数一定要与实际存储值得字节数对应,否则无法存入报错CLIENT_ERROR bad data chunk  比如存入值3字节则值bytes为3值例如ksf

    noreply:可选参数,可以在命令的第一行后面加入noreply,以避免在处理交互命令的时候,等待服务端的返回。

    第二行:value:存储的值(始终位于第二行)。

    1. set 命令

      用于将value(数据值)存储到指定的key(键)中。如果该key已经存在,则会用新的value值替换旧value值,也就是可以实现更新的操作。

      语法:  set key flags exptime bytes [noreply]

           value

      参数说明

        key : 键值对 key-value 中的key,用于以此查找存储的value。

        flags : 可以包括键值对的整形参数,客户机使用它存储关于键值对的额外信息。

        exptime : 在缓存中保存键值对的时间长度(以秒为单位,0表示永远)。

        bytes : 在缓存中存储的字节数。

        noreply(可选参数) : 该参数告知服务器不需要返回数据。

        value : 存储的值,始终位于第二行。

      输出:

         STORED : 保存成功后的输出。

         ERROR : 保存失败后的输出。

      栗子:  

        set name 0 900 6

        justin

        STORED

        

        get name

        VALUE name 0 6

        justin

        END

    2. add 命令

      用于将value存储在指定的key中,若key存在,则不会更新数据。

      语法:  add key flags exptime bytes [noreply]

           value

      参数说明:同set。

      输出:  STORED : 替换成功后输出。

           NOT_STORED : 替换失败后输出。

      与set的区别

        (1) 若key存在,set命令会做更新操作;而add命令则不会更新数据,即之前值保持不变,并得到响应:NOT_STORED.

        (2)语法上一致,除了一个是set开头,一个是add开头。

        (3)保存失败后的输入不同,set返回ERROR,而add返回NOT_STORED。

    3. replace 命令

      用于替换已存在的key的value值,若key不存在,则替换失败,并得到响应:NOT_STORED。

      语法: replace key flags exptime bytes [noreply]

          value

      参数说明 :同set

      输出:  STORED : 替换成功后输出。

           NOT_STORED : 替换失败后输出。

    4.  append 命令

      用于向已存在key的value值后面追加数据。

      语法: append keys flags exptime bytes [noreply]

          value

      参数说明:同set。

      输出:   STORED:保存成功后输出。

          NOT_STORED:该键在 Memcached 上不存在。

    •       CLIENT_ERROR:执行错误。

    5. prepend 命令

      用于向已存在的key的value值前面追加数据。

      语法: prepend keys flags exptime bytes [noreply]

          value

      参数说明:同set。

      输出:   STORED:保存成功后输出。

          NOT_STORED:该键在 Memcached 上不存在。

          CLIENT_ERROR:执行错误。

    6. cas 命令 

      Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作,

      它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。

      检查是通过cas_token参数进行的, 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值。

      --就像是给这个key-value键值对设置一个“版本”标识符。

      --说白了就是版本控制,检查和更新,只有从你读取数据后,别人没有更新这个数据,才能够正确保存。通常和gets配合使用必须等于当前的版本才能更新小于大于都不行.原子性操作

      语法: cas key flags exptime bytes unique_cas_token [noreply]

          value

      参数说明:

        unique_cas_token : 这个是通过gets命令获得的一个唯一64位值。

        其他参数同set。

      输出

       STORED:保存成功后输出。

       ERROR:保存出错或语法错误。

       EXISTS:在最后一次取值后另外一个用户也在更新该数据。

       NOT_FOUND:Memcached 服务上不存在该键值。

          

  • 相关阅读:
    记Git报错-Everything up-to-date
    开发相关的绝赞网站和框架
    记Git报错-refusing to merge unrelated histories
    Nodejs和npm入门使用
    【转】什么是JavaScript
    CSS学习摘要-定位实例
    golang 文件服务器
    golang postgresql CRUD
    golang sqlite3 CRUD
    psql: 致命错误: 对用户"user1"的对等认证失败
  • 原文地址:https://www.cnblogs.com/VweiweiyixiaoV/p/6705201.html
Copyright © 2020-2023  润新知