Docker搭建webdis用于提供api查询redis中的数据

背景

为什么想着要去搭建一个api的服务去查询redis中的数据呢?原因如下:

最近在做一个实战项目的接口自动化,先选用的是postman工具,该项目的登录接口会涉及到要输入验证码,然后验证码是存储在redis中的,目前postman中好像没找到什么好的方法去直接查redis中的数据,然后就准备采取这种这种的方式。

本来是自己用python写了一个api接口去查的,后来在微信群请教的时候,有大佬提示可以考虑下Webdis,然后我查了一下可以用,然后今天决定分享出来。

部署教程

webdis本身是github上一个开源的项目,本来打算用源码编译部署的,尝试了一下编译会报错,懒得去折腾了,于是转用docker的方式去搭建。

操作步骤如下:

1、在服务器上搭建好docker环境。Docker环境搭建

如果有不会搭建的,可以参考菜鸟教程,去上面搜教程即可。

2、下载镜像

  
docker pull nicolas/webdis:latest

3、启动容器

  
docker run -itd --name webdis -p 7379:7379 nicolas/webdis

4、进入到容器里面,修改redis的地址,然后重启镜像

  
进入容器:  
docker exec -it webdis sh  
cd /etc  
vi webdis.prod.json  
然后修改redis_host,填入自己的redis地址接口

picture.image

然后执行命令重启一下docker镜像:

  
docker restart webdis

测试效果

picture.image

测试常用API,或者在浏览器打开对应地址测试

  
 # curl http://127.0.0.1:7379/SET/key/value  
 # curl http://127.0.0.1:7379/GET/key  
 # curl http://127.0.0.1:7379/DEL/key  
 # curl http://127.0.0.1:7379/keys/*

python脚本实现简易的api接口查redis数据

redis_tools.py:

定义一个获取redis连接对象和一个用get命令获取数据的方法

  
import redis  
  
  
def get_redis_client(host="xxx.xxx.xxx.xxx", port=6379):  
 client = redis.Redis(host=host, port=port, decode_responses=True)  
 return client  
  
  
def get_redis_data(client, operate, key):  
 if operate == 'get':  
        return client.get(key)  

redisapi.py:

  
from flask import Flask, request  
from redis_tools import *  
  
app = Flask(__name__)  
  
return_dict = {'code': '200'}  
  
  
@app.route('/redisapi/get', methods=['GET'])  
def redisapi_get():  
 if request.method == 'POST':  
 return_dict['code'] = '405'  
 return_dict['message'] = 'Method not allowed'  
  
 if request.args is None:  
 return_dict['code'] = '400'  
 return_dict['message'] = '请求参数key不能为空'  
 elif "key" in request.args.to_dict().keys():  
 get_data = request.args.to_dict()  
 key = get_data['key']  
 r = get_redis_client()  
 result = get_redis_data(r, 'get', key)  
 return_dict['data'] = result  
 return return_dict  
  
  
if __name__ == '__main__':  
 app.run(debug=True)  

运行redisapi.py脚本后,就可以在浏览器查询redis中的数据了:

http://127.0.0.1:5000/redisapi/get?key=backup3

picture.image

0
0
0
0
评论
未登录
暂无评论