博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webdis实现Redis的http接口及多数据格式共享 [含json,restful]
阅读量:5796 次
发布时间:2019-06-18

本文共 4283 字,大约阅读时间需要 14 分钟。

前言:

最近用tornado写了redis的接口,为自己的做cs之间的数据中转,以及后期给别部门的临时数据调用。这些东西难度真不大,但是很杂乱,还要保证性能。

朋友推荐了我这款redis的http的服务端利器,要功能他有,要性能他也有。。。

webdis是一个简单的 Web 服务器,提供了 HTTP 接口来访问 Redis 服务器,使用了 hiredis, jansson, libevent, and http-parser 等软件。

Redis 一直以来只提供纯文本操作协议(只有在 Cluster 中应用了二进制协议),这可能令很多推崇 RESTFul 的同学感觉不爽了,最近,一位名叫高手的同学业余开发了一个支持 HTTP 协议的 Redis Proxy,取名Webdis。其在Redis 的讨论区一发布,则引来一遍赞扬之声。(鼓掌!!!)

开始:

项目地址

git clone git://github.com/nicolasff/webdis.git                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  cd webdismake./webdis &

配置webdis

但是提示错误~

为了彻底点,咱们把主要的开发包都搞下,redis-server也配置下 ~

yum install libevent-devel

yum install redis

redis server 的启动 !

编译文件及启动webdis~

简单的测试下哈~

curl http://127.0.0.1:7379/SET/hello/world→ {"SET":[true,"OK"]}curl http://127.0.0.1:7379/GET/hello→ {"GET":"world"}curl -d "GET/hello" http://127.0.0.1:7379/→ {"GET":"world"}

webdis还支持post的方式 ~

webdis支持很多的格式:

.json for application/json (this is the default Content-Type)..msg for application/x-msgpack. See http://msgpack.org/ for the specs..txt for text/plain.html for text/htmlxhtml for application/xhtml+xmlxml for text/xml.png for image/pngjpg or jpeg for image/jpegAny other with the ?type=anything/youwant query string.Add a custom separator for list responses with ?sep=, query string.

下面是txt的格式 ~

下面是json的格式 ~

webdis也可以直接上传文件的 ~

Webdis supports file upload using HTTP PUT. The command URI is slightly different, as the last argument is taken from the HTTP body. For example: instead of /SET/key/value, the URI becomes /SET/key and the value is the entirety of the body. This works for other commands such as LPUSH, etc.webdis 是支持文件上传的~

上传文件~

查看上传好的页面 ~

对于二进制文件的上传 ~

上传 ~

我上传了一个nginx文件,下载成一个nginx rpm文件 ~

查看长传的情况 ~

但是有个极大的问题是,二进制的文件不能太大 ~

咱们测试下在速度快的情况下他的大小能到多少~ 5.3m 没啥压力~速度很快 ~

我测试了100M左右的文件~ 速度还算可以~ 在3.1s秒左右~

大小就这样了,这算是个小应用,可以做共享数据的时候,也能搞搞数据文件啥的,但是没有共享数据的应用,估计就没人这么蛋疼用redis存文件。

webdis 也是支持ACL的,来源的ip地址限制以及基本认证的方式 !

webdis.json是webdis的配置文件 ~

这个可以配置webdis连接后端时候的所需要的信息,以及自己的配置信息。

哎呀~ 居然还有多线程和线程池的配置~ 不错不错 !!!

"redis_host":   "127.0.0.1","redis_port":   6379,"redis_auth":   null,"http_host":    "0.0.0.0","http_port":    7379,"threads":      5,"pool_size": 20,"daemonize":    false,"websockets":   false,"database":     0

下面是安全的信息~ 基本认证,ip地址的限制 ~

{    "disabled": ["DEBUG", "FLUSHDB", "FLUSHALL"],},{    "http_basic_auth": "user:password",    "disabled": ["DEBUG", "FLUSHDB", "FLUSHALL"],    "enabled":  ["SET"]},{    "ip":       "192.168.10.0/24",    "enabled":  ["SET"]},{    "http_basic_auth": "user:password",    "ip":       "192.168.10.0/24",    "enabled":  ["SET", "DEL"]}

webdis还有个websocket的模式~

function testJSON() {    var jsonSocket = new WebSocket("ws://127.0.0.1:7379/.json");    jsonSocket.onopen = function() {        console.log("JSON socket connected!");        jsonSocket.send(JSON.stringify(["SET", "hello", "world"]));        jsonSocket.send(JSON.stringify(["GET", "hello"]));    };    jsonSocket.onmessage = function(messageEvent) {        console.log("JSON received:", messageEvent.data);    };}testJSON();

我们开始来个简单的性能测试吧~ (我原本想用gevent和curllib2来测试,但是没找到以前写过的demo例子。。。只能简单用ab来测试啦~)

10000个请求用了不到3秒解决 ~没有报错的~

又测试了一遍~ (我晕,居然又到1.8啦~ )

他的cpu情况,每个内核都有跑,每个核心都在有效的利用~ 不像python,nodejs那样只能单核的跑~

好嘞~ 就介绍这里啦~~~ 希望这webdis 越来越好,github里有不少人fork他的代码,issue里面也是很热乎的~

我现在尽量用这个做redis的http,而不是像以前python自己写了。

总结:

webdis是个很方便的redis http接口程序~ 推荐大家使用~ 前提是你懒得自己写http的接口 ~

转载地址:http://wfifx.baihongyu.com/

你可能感兴趣的文章
部署 & virtualen
查看>>
POJ NOI0105-43 质因数分解
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>
jQuery的height()和JavaScript的height总结,js获取屏幕高度
查看>>
FreeMarker-Built-ins for strings
查看>>
验证DataGridView控件的数据输入
查看>>
POJ1033
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
一维数组
查看>>
Linux学习笔记之三
查看>>
2463: [中山市选2009]谁能赢呢?
查看>>
3631: [JLOI2014]松鼠的新家
查看>>
微信公众号
查看>>
Android_内部文件读取
查看>>
QTP的那些事---webtable的一些重要使用集合精解
查看>>
POJ1061 青蛙的约会(扩展欧几里得)题解
查看>>
[JavaWeb]关于DBUtils中QueryRunner的一些解读(转)
查看>>
C/C++之循环结构
查看>>
Django 2.1.3 文档
查看>>
hdu2147
查看>>