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

2022-04-27 08:15:42 浏览数 (1)

背景

为什么想着要去搭建一个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

0 人点赞