Linux系统Memcached服务介绍
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安装):
tar zxf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
./configure
make && make install
安装Memcached命令如下:
tar zxf memcached-1.4.20.tar.gz
cd memcached-1.4.20
./configure
make && make install
启动Memcached
/usr/local/bin/memcached -p 11211 -u root -c 1024 -d
##-p 指定端口11211 -c 最大并发 -d 后台模式
如果出现报错,提示找不到libevent-1.4.so.xx文件,解决方法如下
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的方式添加数据
[root@~]# printf "set key001 0 0 10rntest123456rn"|nc 127.0.0.1 11211
#添加数据,10个字节数,后面要一致,否则添加不成功
STORED
[root@~]# printf "get key001rn"|nc 127.0.0.1 11211
#查询数据
VALUE key001 0 10
test123456
END
[root@~]# printf "delete key001rn"|nc 127.0.0.1 11211
#删除数据
DELETED
[root@~]# printf "get key001rn"|nc 127.0.0.1 11211
END
通过telnet 方式添加数据
[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
更多配置与参数介绍请参考帮助文档
- SpringMVC入门就这么简单
- pl/sql中的forall简单测试(r5笔记第63天)
- SpringMVC【开发Controller】详解
- 巧用外部表备份历史数据(r5笔记第62天)
- Github 项目推荐 | 最小化类 AlphaGo Zero 引擎 —— Nochi
- 半自动化运维之快速连接到指定环境(一) (r5笔记第61天)
- Spring【DAO模块】知识要点
- 浅谈exp/imp(上) (r5笔记第81天)
- Java高并发秒杀系统【观后总结】
- 【专业技术】引擎算法探究
- 阅读SSM项目之scm
- 阅读SSH项目之ERP
- Hybris商品图片导入与压缩有关的配置
- 一条sql语句的建议调优分析(r5笔记第73天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 在 res/layout 文件夹 下创建一个 子文件夹实例
- Android开发实现TextView超链接5种方式源码实例
- Android根据包名停止其他应用程序的方法
- Android APP存活检测方式
- 利用Android两行代码真正杀死你的App
- android判断应用是否已经启动的实例
- 解决android studio引用远程仓库下载慢(JCenter下载慢)
- 在Android中查看当前Activity是否销毁的操作
- Android 7.0 运行时权限弹窗问题的解决
- Android加密之全盘加密详解
- Android 实现彻底退出自己APP 并杀掉所有相关的进程
- 使用Android开发接入第三方原生SDK实现微信登录
- Android打包篇:Android Studio将代码打包成jar包教程
- Android系统制作自定义签名的例子
- 抖音短视频系统开发,日期加减