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项目:
第二步:引入依赖

第三步:配置文件:

第四步:写配置类信息:

第五步:测试:

还有其他方法,有兴趣的可以试一下。
本文来自博客园,作者:huhy,转载请注明原文链接:https://www.cnblogs.com/huhongy/p/10022119.html


浙公网安备 33010602011771号