Flask对Redis缓存库做数据写入读出
最近做相关FLASK接口数据对数据的存储实现及时存取,是这样的一个环境状态:(上草图)
※目前所需要知道的是我从client端,做GET或者POST请求时,我的Flask请求参数会判断相应的请求参数对Redis做 写入/读取 操作。
※这是我们所需要实现的大概情况,根据这个大概情况,我们心里就应该能够理解所需要的操作步骤分别是什么了。
※我按照草图里面的请求操作来分解一下需要的相关操作:
1、※client端进行GET请求时,我的Flask接收到GET请求,然后对GET请求进行相应的操作,相应的操作中可能包含对Redis的读写。
2、※client端进行POST请求时,我的Flask接收到POST请求,然后对POST请求进行相应的操作,相应的操作中也可能包含对Redis的读写。
3、※以上两种操作最后都可能对Redis进行相应的读写,那么Redis接收到了相关的操作请求,就需要执行录入或者反馈操作信息。
OK!
※那么根据这三条分解步骤,可以知道我们所需要的数据交互核心在Flask框架本身,我需要将入出接口数据在Flask中进行交互,然后剩下执行的写入和查询Redis操作单独择出来做明显的动作分离即可。
1、先定义Redis操作动作代码RedisOpration_file:
#RedisOpration_file
import redis
class Insert_redis():
read_redis = redis.StrictRedis(host='localhost', port=6379,decode_responses=True)
def set_value(self,key_name,set_input_value):
self.read_redis.lpush(key_name, set_input_value)
opration_redis = Insert_redis()
if __name__ == "__main__":
print("")
else:
opration_redis
在上面这段代码中,我定义了一个class类,类名叫“Insert_redis”。
在class类中定义了一个类函数read_redis创建Redis连接,连接参数为本地的6379默认Redis端口,后面的decode_responses参数意思是将写入Redis键值对中的value定义为String字符串类型。
set_value函数方法定义了两个方法传参key_name和set_input_value,分别传入我们后面执行操作时候需要创建的Redis key名和key里面的value参数。
在set_value函数方法里面只定义了一条操作,这一条操作是对Redis创建Key值并且对创建的Key值添加value操作,LPUSH代表的对Redis进行list列表创建,后面的参数按照位置对应是*(创建的Key值,该Key值中传入的value参数)*
2、定义一个Flask_Opration,该Flask引用Insert_redis类中的Redis操作:
#Flask_Opration
import flask,RedisOpration_file
GetPost_data = flask.Flask(__name__)
@GetPost_data.route('/',methods=['GET','POST'])
def Get_Post():
if flask.request.method == "GET":
RedisOpration_file.opration_redis.set_value("Key_aa","value")
return ("写入Key_aa键值成功!对Key_aa键值录入一条数据")
if __name__ == "__main__":
GetPost_data.run()
在第二段代码中,我定义了一个简单的Flask请求反馈request函数方法,方法名称是“Get_Post”。
在Get_Post中做了条件判断,判断Flask接收到的前端接口请求是GET方法,调用RedisOpration_file中的set_value动作将"Key_aa"和"value"键入Redis。
至此从Flask到Redis数据写入就已经完成了,我们可以试着打开Postman接口工具,来对我们的Redis进行数据写入:
打开Postman:直接在Postman中通过Flask地址进行JSON的GET点击即可实现对Redis的数据键入:
可以看到右边postman返回的参数提示已经将我们的Key值和Value参数写入到了左边的Redis中。
3、接下来定义一个读取Redis的动作:
在RedisOpration_file中增加一个读取方法
#RedisOpration_file
import redis
class Insert_redis():
read_redis = redis.StrictRedis(host='localhost', port=6379,decode_responses=True)
dict_a = {}
def set_value(self,key_name,set_input_value):
self.read_redis.lpush(key_name, set_input_value)
def get_value(self):
for key in self.read_redis.keys("*"):
random_value = self.read_redis.lrange(key, 0, 0)
self.dict_a[key] = random_value[0]
return self.dict_a
opration_redis = Insert_redis()
if __name__ == "__main__":
print("")
else:
opration_redis
在第3段代码中,我新增了一个get_value方法,这个方法中定义了一个循环,循环遍历Redis中读取的所有Key值value,并将这些读取到的value一一对应key值存储到dict_a字典中,最后返回生成的字典。
4、在Flask操作中的Get_Post方法内追加一条POST判断:
#Flask_Opration
import flask,RedisOpration_file
GetPost_data = flask.Flask(__name__)
@GetPost_data.route('/',methods=['GET','POST'])
def Get_Post():
if flask.request.method == "GET":
RedisOpration_file.opration_redis.set_value("Key_aa","value")
return ("写入Key_aa键值成功!对Key_aa键值录入一条数据")
if flask.request.method == "POST":
get_redis = RedisOpration_file.opration_redis.get_value()
return (get_redis)
if __name__ == "__main__":
GetPost_data.run()
在第4段代码中,我新增了一条Flask对POST请求判断,如果接口请求为POST,则调用
get_value方法返回Redis中所有的key值和value参数组成的字典值到Postman展示出来。
END!
至此,一小段简单的Flask接口对接Redis缓存库就已经完成了!
记录一小步,向前一大步!