Memcached入门到缓存组件的选型
Posted 踩踩踩从踩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Memcached入门到缓存组件的选型相关的知识,希望对你有一定的参考价值。
前言
本篇文章会介绍如何安装memcached和使用,会从其概念、安装、使用命令去介绍;以及Memcached设计理念;Redis VS Memcached如何选择?它有哪些应用场景? Memcached集群操作的。都会详细的去介绍
Memcached简介
memcached是一套分布式的快取系统,与redis相似;免费和开源,高性能,分布式内存对象缓存系统。通过减轻数据库负载来加速动态Web应用程序,Memcached简单而强大。
- 本质上就是一个内存Key-Value缓存
数据结构也比较少
- 协议简单,使用文本行的协议
- 不支持数据持久化,服务器关闭后数据全部丢失
这也是对比redis会少了这个
- 简洁强大,上手容易,便于快速开发
- 没有安全机制
安装和测试
memcached单机到集群完整搭建过程 提取码: 4mxh
在linux上下载安装包并解压,进行启动就可以了比较简单,包括配置
yum install libevent‐devel
wget https://memcached.org/latest
mv latest memcached‐1.5.12.tar.gz
tar ‐zxf memcached‐1.5.12.tar.gz
cd memcached‐1.5.12
./configure ‐‐prefix=/usr/local/memcached
make && sudo make install
./memcached -m 64 -p 11211 -u root -vvvv
‐p <num> 监听的TCP端口(默认: 11211)
‐U <num> 监听的UDP端口(默认: 11211, 0表示不监听)
‐l <ip_addr> 监听的IP地址。(默认:INADDR_ANY,所有地址)
‐d 作为守护进程来运行
‐u <username> 设定进程所属用户(仅root用户可以使用)
‐m <num> 所有slab class可用内存的上限(默认:64MB)
‐v 提示信息(在事件循环中打印错误/警告信息。)
‐vv 详细信息(还打印客户端命令/响应)
-vvv 超级详细信息
需要依赖于libevent‐devel
配置
第一次设置memcached的,你要注意`-m`,`-d`和`-v`如果是通过软件包管理系统安装的memcached,/etc/sysconfig/memcached配置脚本文件。如果是自己编译构建的memcached,源码文件中的'scripts /'目录包含几个init脚本示例。检查运行是配置
$ echo "stats settings" | nc localhost 11211
# 其他更多参数可以通过下面的命令查看
./memcached -h
连接
telnet连接上11211端口就可以作为客户端给服务端发送指令了。
# telnet memcached_server_ip port例如:
telnet localhost 11211
类似 redis 中nx的命令 add 已经存在则报错 用于将 value存储在指定的 key中,存在则不更新。
包括replice命令 ,替换已存在的 key的value,不存在,则替换失败。
这里在java客户端中使用比较简单
memcache 的使用命令
客户端使用
xmemcached 对 缓存进行使用
在代码中使用
在spring 中使用
- 配置对应的memcachedclient
- 它自己的内存内存分配机制可以使得它可以存大数据文件等
服务端配置
- 命令行参数
- init脚本
- 检查运行配置
直接使用配置该内容。
Memcached设计理念
总的来说简单。
- 简单的键/值存储
- 服务端功能简单,很多逻辑依赖客户端实现
- Memcached实例之间没有通信机制
- 每个命令的复杂度为 O(1)
- 缓存自动清除机制 lru算法
- 缓存失效机制 自己选择发到客户端数据 服务端自动过期
性能
服务器硬件需要
- CPU要求
- 内存要求
- 网络要求
Memcached应用场景
Redis与Memcached
这里进行对比,也是因为数据只支持list,才可以考虑大数据的方式,并且在内存中。如果就内存而言,Memcached是不错的选择的。简单方便快捷;内存管理机制上是两种方式不一样的。
Memcached应用场景
Memcache集群
对于memcache是不支持集群的,多个memcache是不会相互交互的,因此 需要中间件
需要一个中间件去转换处理,这个中间件还得翻倍去处理 维护各个memcache,这个中间件是维护在客户端的。
xmemcache 就可以使用一致性hash算法选择,并在在代码中配置好,或者在配置文件配置是一样的。
或者
Twemproxy
twemproxy(nutcracker) 是 Twitter开源的轻量级 memcached / redis 代理服务器,本质就是一个集群管理工具,主要用来弥补 Redis和 Memcached对集群管理的不足,其完成的最大功劳就是通过在后端减少同缓存服务器的连接数从而增加吞吐量。
部署方式
- 安装依赖
yum install autoconf
yum install automake
yum install libtool
- 安装twemproxy代理
wget https://github.com/twitter/twemproxy/archive/master.zip
unzip master.zip
cd twemproxy
autoreconf -fvi
./configure --enable-debug=full
make
src/nutcracker -h
- 查看 twemproxy帮助
src/nutcracker -h
- 准备 twemproxy配置文件
vim /usr/local/twemproxy/conf/nutcracker.yml
‐ 修改配置文件
memcached:
- 如果指定了ip地址,则只会允许对应的IP地址连接,要允许外网地址则使用0.0.0.0代替127.0.0.1
listen: 127.0.0.1:22124
hash: fnv1a_64
distribution: ketama
timeout: 100
auto_eject_hosts: true
server_retry_timeout: 2000
server_failure_limit: 3
servers:
- 127.0.0.1:11220:1
- 127.0.0.1:11221:1
- 127.0.0.1:11222:1
- 检查yml语法
/usr/local/twemproxy/src/nutcracker -t
- 启动twemproxy 后台启动加参数-d
/usr/local/twemproxy/src/nutcracker -d
Memcached监控命令
以上是关于Memcached入门到缓存组件的选型的主要内容,如果未能解决你的问题,请参考以下文章