背景
为什么想着要去搭建一个api的服务去查询redis中的数据呢?原因如下:
最近在做一个实战项目的接口自动化,先选用的是postman工具,该项目的登录接口会涉及到要输入验证码,然后验证码是存储在redis中的,目前postman中好像没找到什么好的方法去直接查redis中的数据,然后就准备采取这种这种的方式。
本来是自己用python写了一个api接口去查的,后来在微信群请教的时候,有大佬提示可以考虑下Webdis,然后我查了一下可以用,然后今天决定分享出来。
部署教程
webdis本身是github上一个开源的项目,本来打算用源码编译部署的,尝试了一下编译会报错,懒得去折腾了,于是转用docker的方式去搭建。
操作步骤如下:
1、在服务器上搭建好docker环境。Docker环境搭建
如果有不会搭建的,可以参考菜鸟教程,去上面搜教程即可。
2、下载镜像
代码语言:javascript复制docker pull nicolas/webdis:latest
3、启动容器
代码语言:javascript复制docker run -itd --name webdis -p 7379:7379 nicolas/webdis
4、进入到容器里面,修改redis的地址,然后重启镜像
代码语言:javascript复制进入容器:
docker exec -it webdis sh
cd /etc
vi webdis.prod.json
然后修改redis_host,填入自己的redis地址接口
然后执行命令重启一下docker镜像:
代码语言:javascript复制docker restart webdis
测试效果
测试常用API,或者在浏览器打开对应地址测试
代码语言:javascript复制 # 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命令获取数据的方法
代码语言:javascript复制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:
代码语言:javascript复制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