memcached详细介绍

Memcached:

  Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。

      Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。

  Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。

  Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。

  本质上,它是一个简洁的key-value存储系统。

  一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

redis和memcached和mongodb对比: 
  1> redis和memcached都是基于内存型的数据库,而mongodb是文档型数据库
   2> redis支持类型多,而memcached仅支持key-value 。mongodb 支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。
    3> redis的value保存值大小默认是512m,而memcached的value为1m.mongoDB基于硬盘的,适合大数据量
    4> redis支持持久化  aof和RDB(默认),memcached是内存型的,机器关机内存数据全部丢失
    5> redis.mongodb支持事务,集群,mongodb又支持分片
注意:我这只介绍部分区别,还有一些大家可以百度一下。

memcached下载安装:

  官网:http://memcached.org/               下载地址:http://memcached.org/downloads

在 1.4.5 版本以前 memcached 可以作为一个服务安装,而在 1.4.5 及之后的版本删除了该功能。因此我们以下介绍两个不同版本 1.4.4 及 1.4.5的不同安装方法:

memcached <1.4.5 版本安装

  1、解压下载的安装包到指定目录。
  2、在 1.4.5 版本以前 memcached 可以作为一个服务安装,使用管理员权限运行以下命令:
    D:\company\memcached\memcached\memcached.exe -d install
  注意:你需要使用真实的路径替代 D:\company\memcached\memcached\memcached.exe。
  3、然后我们可以使用以下命令来启动和关闭 memcached 服务:
    D:\company\memcached\memcached\memcached.exe -d start
    D:\company\memcached\memcached\memcached.exe -d stop
  4、如果要修改 memcached 的配置项, 可以在命令行中执行 regedit.exe 命令打开注册表并找到 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached" 来进行修改。
    如果要提供 memcached 使用的缓存配置 可以修改 ImagePath 为:
    "D:\company\memcached\memcached\memcached.exe" -d runservice -m 512
    -m 512 意思是设置 memcached 最大的缓存配置为512M。
  此外我们还可以通过使用 "D:\company\memcached\memcached\memcached.exe -h" 命令查看更多的参数配置。
  5、如果我们需要卸载 memcached ,可以使用以下命令:
    D:\company\memcached\memcached\memcached.exe -d uninstall

memcached >= 1.4.5 版本安装

  1、解压下载的安装包到指定目录。
  2、在 memcached1.4.5 版本之后,memcached 不能作为服务来运行,需要使用任务计划中来开启一个普通的进程,在 window 启动时设置 memcached自动执行。
    我们使用管理员身份执行以下命令将 memcached 添加来任务计划表中:
    schtasks /create /sc onstart /tn memcached /tr "'D:\company\memcached\memcached-amd64\memcached.exe' -m 512"
  注意:你需要使用真实的路径替代 D:\company\memcached\memcached-amd64\memcached.exe。
  注意:-m 512 意思是设置 memcached 最大的缓存配置为512M。
  注意:我们可以通过使用 "D:\company\memcached\memcached-amd64\memcached.exe -h" 命令查看更多的参数配置。
  3、如果需要删除 memcached 的任务计划可以执行以下命令:
    schtasks /delete /tn memcached 


 

  注意:  1.4.5 之前的版本可以作为一个服务安装,1.4.5版本之后要发布定时任务启动,大家要注意这点 


命令测试:

  

连接命令:
    telnet HOST PORT
    eg:telnet 127.0.0.1 11211
查询命令:
    1> Memcached get 命令获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。
        get key              --获取指定key
        get key1 key2 key3   --获取指定多个key
        # key:键值 key-value 结构中的 key,用于查找缓存值。
    2> Memcached gets 命令获取带有 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空。
        gets key              --获取指定key
        gets key1 key2 key3   --获取指定多个key
        # key:键值 key-value 结构中的 key,用于查找缓存值。
    3> Memcached delete 命令用于删除已存在的 key(键)。
        delete key [noreply]
        delete key1 key2 key3
        # key:键值 key-value 结构中的 key,用于查找缓存值。
          noreply(可选): 该参数告知服务器不需要返回数据
存储命令:
    1> Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中。如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。
        set key flags exptime bytes [noreply] 
        value 
        # key:键值 key-value 结构中的 key,用于查找缓存值。
          flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息。
          exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
          bytes:在缓存中存储的字节数
          noreply(可选): 该参数告知服务器不需要返回数据
          value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
    2> Memcached add 命令用于将 value(数据值) 存储在指定的 key(键) 中。如果 add 的 key 已经存在,则不会更新数据,之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。
        add key flags exptime bytes [noreply] 
        value 
        # key:键值 key-value 结构中的 key,用于查找缓存值。
          flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息。
          exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
          bytes:在缓存中存储的字节数
          noreply(可选): 该参数告知服务器不需要返回数据
          value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
    3> Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值)。如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED。
        replace key flags exptime bytes [noreply] 
        value 
        # key:键值 key-value 结构中的 key,用于查找缓存值。
          flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息。
          exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
          bytes:在缓存中存储的字节数
          noreply(可选): 该参数告知服务器不需要返回数据
          value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
    4> Memcached append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 。
        append key flags exptime bytes [noreply] 
        value 
        # key:键值 key-value 结构中的 key,用于查找缓存值。
          flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息。
          exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
          bytes:在缓存中存储的字节数
          noreply(可选): 该参数告知服务器不需要返回数据
          value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
    5> Memcached prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据 。
        prepend key flags exptime bytes [noreply] 
        value 
        # key:键值 key-value 结构中的 key,用于查找缓存值。
          flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息。
          exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
          bytes:在缓存中存储的字节数
          noreply(可选): 该参数告知服务器不需要返回数据
          value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
    6>Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。
        检查是通过cas_token参数进行的, 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值。
        cas key flags exptime bytes unique_cas_token [noreply]
        value
        # key:键值 key-value 结构中的 key,用于查找缓存值。
          flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息。
          exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
          bytes:在缓存中存储的字节数
          unique_cas_token通过 gets 命令获取的一个唯一的64位值。
          noreply(可选): 该参数告知服务器不需要返回数据
          value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
统计命令:
    1> Memcached stats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等。        
        
        

   2> Memcached stats items 命令用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。

      

   3> Memcached stats slabs 命令用于显示各个slab的信息,包括chunk的大小、数目、使用情况等。

     4> Memcached stats sizes 命令用于显示所有item的大小和个数。该信息返回两列,第一列是 item 的大小,第二列是 item 的个数。

    5> Memcached flush_all 命令用于用于清理缓存中的所有 key=>value(键=>值) 对。该命令提供了一个可选参数 time,用于在制定的时间后执行清理缓存操作。

 springboot整合memcached:

  第一步:搭建springboot项目:

  第二步:引入依赖

    

  第三步:配置文件:

    

  第四步:写配置类信息:

    

  第五步:测试:

    

  还有其他方法,有兴趣的可以试一下。

posted @ 2018-11-26 18:43  陽66  阅读(298)  评论(0)    收藏  举报