Memcached 结合nginx实现小文件存储方案
来源:互联网 发布:dao编程 编辑:程序博客网 时间:2024/05/22 15:47
ngx_http_memcached_module可以操作任何兼用memcached协议的软件。如ttserver、membase等。
memcached的key可以通过memcached_key变量来设置,如以$uri。如果命中,那么直接输出内容,没有命中就意味着nginx需要从应用程序请求页面。同时,我们还希望该应用程序将键值对写入到memcached,以便下一个请求可以直接从memcached获取。如果键值不存在,nginx将报告not found错误。最好的方法是使用error_page指定和location请求处理。同时包含”Bad Gateway”错误和”Gateway Timeout”错误,如:error_page 404 502 504 = @app;。注意:需要设置default_type,否则可能会显示不正常。
一、使用测试
1.安装nginx略
2.配置nginx,并启动
nginx配置实例
worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; upstream memcacheds { server 127.0.0.1:11211;}server {listen 8080;server_name localhost;index index.html index.htm index.php;location /images/ {set $memcached_key $request_uri;add_header X-mem-key $memcached_key;memcached_pass memcacheds;default_type text/html;error_page 404 502 504 = @app;}location @app {proxy_pass http://127.0.0.1;}}
启动nginx
./sbin/nginx
3.使用java写图片memcached
public static void main(String[] args) throws Exception {List<InetSocketAddress> servers = new ArrayList<InetSocketAddress>();servers.add(new InetSocketAddress("127.0.0.1", 11211));SpymemcachedManager memcachedManager = new SpymemcachedManager(servers);File file = new File("src/main/resources/memcache.png");BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));ByteArrayOutputStream out = new ByteArrayOutputStream(1024);byte[] temp = new byte[1024];int size = 0;while ((size = in.read(temp)) != -1) {out.write(temp, 0, size);}in.close();byte[] content = out.toByteArray();memcachedManager.add("/images/memcache.png", content, 0);memcachedManager.close();}java添加后通过http://127.0.0.1:8080/images/memcache.png即可访问
二、模块指令说明
1.memcached_bind
语法: memcached_bind address | off;
默认值: none
配置段: http, server, location
指定从哪个IP来连接memcached服务器
2.memcached_buffer_size
语法: memcached_buffer_size size;
默认值: 4k|8k;
配置段: http, server, location
读取从memcached服务器接收到响应的缓冲大小。尽快的将响应同步传给客户端。
3.memcached_connect_timeout
语法:memcached_connect_timeout time;
默认值:60s;
配置段:http, server, location
与memcached服务器建立连接的超时时间。通常不超过75s。
4.memcached_gzip_flag
语法:memcached_gzip_flag flag;
默认值:none
配置段:http, server, location
测试memcached服务器响应标志。如果设置了,将在响应头部添加了Content-Encoding:gzip。
5.memcached_next_upstream
语法: memcached_next_upstream error | timeout | invalid_response | not_found | off …;
默认值: error timeout;
配置段: http, server, location
指定在哪些状态下请求将转发到另外的负载均衡服务器上,仅当memcached_pass有两个或两个以上时使用。
6.memcached_pass
语法:memcached_pass address:port or socket;
默认值:none
配置段:location, if in location
指定memcached服务器地址。使用变量$memcached_key为key查询值,如果没有相应的值则返回error_page 404。
7.memcached_read_timeout
语法:memcached_read_timeout time;
默认值:60s;
配置段:http, server, location
定义从memcached服务器读取响应超时时间。
8.memcached_send_timeout
语法:memcached_send_timeout
默认值:60s
配置段:http, server, location
设置发送请求到memcached服务器的超时时间。
9.$memcached_key变量
memcached key的值。
四、nginx memcached的增强版ngx_http_enhanced_memcached_module
基于nginx memcached 模块的,添加的新特性有:
1. 自定义HTTP头,如Content-Type, Last-Modified。
2. hash键可超过250个字符,memcached受限。
3. 通过HTTP请求将数据存储到memcached。
4. 通过HTTP请求从memcached删除数据。
5. 通过HTTP请求清除所有memcached缓存数据。
6. 通过HTTP请求获取memcached状态数据。
7. 键名空间管理,来部分刷新缓存。
8. 缓存通过If-Modified-Since头和内容Last-Modified来回复304Not Modified请求。
五、总结
1.memcached不是持久化的,如果是永久性的图片应用,选用可以持久化存储方案合适,如riak、membase、ttserver、mongodb GridFS等等。
2.对于经常变化的数据,用memcached来做缓存也不合适,需要经常刷新缓存
转至:http://www.ttlsa.com/html/2418.html
参考文章:
1.ttserver+nginx构建高并发高可用性应用
2.memc_nginx+srcache_nginx+memcached构建透明的动态页面缓存
nginx的memc-nginx和srcache-nginx模块可以主动的向memcached添加缓存。
- Memcached 结合nginx实现小文件存储方案
- Memcached 结合nginx实现小文件存储方案
- nginx反代mogilefs实现海量小文件存储
- nginx反代mogilefs实现海量小文件存储
- 基于小文件的分布式文件存储方案(JDistFS)
- Nginx+memcached+tamcat7集群管理配置方案
- [py]使用flaskup结合nginx实现文件上传
- nginx+tomcat7+memcache集群,使用memcached-session-manager实现session共享方案
- 服务器系统诊断指示灯快速解读方案 Android 文件存储与SharedPreferences结合应用
- 文件存储方案对比
- memcached实现分布式数据存储
- Nginx+Tomcat+Memcached 集群Session共享[memcached服务安装、tomcat使用memcache存储session、nginx安装配置实现tomcat负载均衡]
- cas 入门之十七:ticket 存储方案-memcached ticket 存储
- 天气预报实现小方案
- NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享
- NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享
- NGINX + TOMCAT + MEMCACHED实现HTTP负载均衡
- nginx、memcached、tomcat7实现tomcat集群
- SICP第二章关于哈夫曼编码的代码
- 【hadoop】 3001-mapreduce并发框架思想
- Ubuntu13.04 下MySQL5.6安装过程
- lucene(全文搜索)_luceneweb例子
- Unix中C程序内存布局
- Memcached 结合nginx实现小文件存储方案
- 心静如水静如止水
- 创建者模式——抽象工厂模式(Abstract Factory)(3)
- 图像检索实战(1):Image retrieval using MatconvNet and pre-trained imageNet
- Mac OS 10.10 php不能连接mysql问题解决
- 中断下半部机制 - 软中断及tasklet
- QModelIndex 转换成QStandardItem
- 非阻塞connect编写方法介绍
- 编程珠玑感悟<1>