前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统Memcached服务介绍

Linux系统Memcached服务介绍

作者头像
民工哥
发布2020-09-16 16:24:32
1.3K0
发布2020-09-16 16:24:32
举报
文章被收录于专栏:民工哥技术之路

Linux系统Memcached服务介绍

什么是Memcached?

Memcached是一个免费开源的、高性能的、具有分布式内存对象缓存系统,它通过减轻数据库负载来提高WEB的访问性能,Memcached是服务端的主程序,这些缓存一般是用来保存一些经常存取的对象或数据(比如浏览器会缓存常访问的网页缓存一样),最终用户通过请求缓存数据提高访问体验。

Memcached是一种内存缓存,把常存取的对象或数据缓存在内存中,内存中的缓存的这些数据通过API的方式被存取,数据就像一张巨大的HASH表,以key-value对的方式存在。

Memcache工作流程

1、检查客户端请求的数据是否在Memcache中存在,如果存在,直接把相关数据返回,不再对数据进行任何操作

2、如果数据不在Memcache中,会去数据库进行查询,把从数据库中获取的数据返回给客户端,同时将数据缓存到Memcache中

3、数据库更新(更新或删除数据)的同时也会更新Memcache中的数据,从而保持数据一致

工作逻辑图如下:

4、如果分配给Memcache的内存使用完,会使用LRU(最近最少使用)和过期策略,失效的数据就会被替换掉,然后替换掉最近未使用的数据

Memcache的特点

1、协议简单

使用基于文本行的协议,能直接通过telnet在Memcached服务器上存取数据,实现比较简单

2、基于Libevent的事件处理

libevent是基于C开发的程序库,Memcached利用这个库进行异步事件处理

3、内置内存管理方式

Memcached有一套自己的管理内存方式,而且非常高效,所有数据都保存在Memcached内置的内存中,当存入的数据占满空间时,会使用LRU算法来清除不使用的缓存数据,从而来重用过期数据的内存空间,但重启服务器数据将丢失

4、各Memcached服务器间互不通信具有分存式特点

各个Memcached服务器之间互不通信,都是独立存取数据,通过客户端的设计让其具有分存式特点,支持大量缓存和大规模应用

Memcached的安装

Memcached的安装很简单,首先需要下载libevent与Memcached软件,下载过程就不再介绍了

安装libevent命令如下(也可直接Yum安装):

代码语言:javascript
复制
tar zxf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
./configure
make && make install 

安装Memcached命令如下:

代码语言:javascript
复制
tar zxf memcached-1.4.20.tar.gz

cd memcached-1.4.20
./configure
make && make install

启动Memcached

代码语言:javascript
复制
/usr/local/bin/memcached -p 11211 -u root -c 1024 -d 

##-p 指定端口11211 -c 最大并发 -d 后台模式

如果出现报错,提示找不到libevent-1.4.so.xx文件,解决方法如下

代码语言:javascript
复制
echo "/usr/local/lib">>/etc/ld.so.conf

ldconfig
[root@~]# lsof -i :11211                       
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
memcached 15744 root   26u  IPv4  25499  0t0  TCP *:memcache (LISTEN)
memcached 15744 root   27u  IPv6  25500  0t0  TCP *:memcache (LISTEN)
memcached 15744 root   28u  IPv4  25503  0t0  UDP *:memcache 
memcached 15744 root   29u  IPv4  25503   0t0  UDP *:memcache 
memcached 15744 root   30u  IPv4  25503   0t0  UDP *:memcache 
memcached 15744 root   31u  IPv4  25503    0t0  UDP *:memcache 

配置Memcached服务

通过NC的方式添加数据

代码语言:javascript
复制
[root@~]# printf "set key001 0 0 10\r\ntest123456\r\n"|nc 127.0.0.1 11211   
代码语言:javascript
复制
#添加数据,10个字节数,后面要一致,否则添加不成功
STORED              
[root@~]# printf "get key001\r\n"|nc 127.0.0.1 11211                     
#查询数据
VALUE key001 0 10
test123456
END
[root@~]# printf "delete key001\r\n"|nc 127.0.0.1 11211                 
#删除数据
DELETED
[root@~]# printf "get key001\r\n"|nc 127.0.0.1 11211   
END

通过telnet 方式添加数据

代码语言:javascript
复制
[root@LVS-2 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set key 0 0 10             
 #添加数据
test654321
STORED
get key                   
#查询数据
VALUE key 0 10
test654321
END
delete key              
#删除数据
DELETED
get key           
END

更多配置与参数介绍请参考帮助文档

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档