redis在pandas一文有详细使用方法(一文教会pandas-CSDN博客),具体可视化软件有redisstudio等。它是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
这里主要阐述redis事务:
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
-
批量操作在发送 EXEC 命令前被放入队列缓存。
-
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
-
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
-
开始事务。
-
命令入队。
-
执行事务。
如果你想在服务器上运行你随时写的代码,可以将代码写入 Redis 数据库,然后在远程服务器上读取并执行这些代码,通常涉及以下步骤:
-
序列化代码:将代码转换为一种可以存储在 Redis 中的格式,通常是字符串格式。
-
写入 Redis:将序列化后的代码存储在 Redis 数据库中。
-
读取代码:从 Redis 数据库中读取存储的代码。
-
反序列化代码:将读取到的字符串格式代码转换回可执行的格式。
-
执行代码:在安全的环境中执行这些代码。
假设你有一段代码:
# 一段函数
def my_function():
print("This is my function running!")
# 将其convert为字符串:
code_str = inspect.getsource(my_function)
# 一段可执行程序
import inspect
code = '''
a=1
if a>1:
print("Hello, World!")
else:
print('error')
'''
r.set('code_snippet', code)
# 一个文件
with open('macd_test.py', 'r') as file:
file_content = file.read()
r.set('python_file_content', file_content)
然后将这个字符串存储在 Redis 中。
import redis
# 连接到 Redis
r = redis.Redis(host='127.0.0.1', port=6379, db=8)
# 将代码存储为 Redis 字符串
r.set('my_function_code', code_str)
在远程服务器上,授权 Redis远程连接权限并读取这个字符串。
# 读取代码
code_str = r.get('my_function_code').decode('utf-8')
反序列化代码,用 exec
或 eval
函数来执行字符串形式的代码:
# 反序列化并执行代码
exec(code_str)
得到运行结果:
这种方式是在你完全信任前提下可以这么做:
- 使用
exec
或eval
执行从外部源(如 Redis)读取的代码极其危险,因为这可能导致代码注入和安全漏洞。 - 如果必须执行从外部存储读取的代码,请确保代码来源是可信的,并且执行环境是安全的。
- 考虑使用其他方法来存储和执行代码,例如将代码存储在文件系统中,并通过安全的 API 调用来触发代码执行。
在大多数情况下是不会将可执行代码存储在 Redis 中。如果确实需要远程执行代码,通常会有一个专门的服务或 API 来处理代码的执行。
下表列出了 redis 事务的相关命令:
序号 | 命令及描述 |
---|---|
1 | DISCARD 取消事务,放弃执行事务块内的所有命令。 |
2 | EXEC 执行所有事务块内的命令。 |
3 | MULTI 标记一个事务块的开始。 |
4 | UNWATCH 取消 WATCH 命令对所有 key 的监视。 |
5 | WATCH key [key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 |
redis还有:
fastapi是一个用于构建 API 的现代、快速(高性能)的 web 框架,专为在 Python 中构建 RESTful API 而设计。
FastAPI 使用 Python 3.8+ 并基于标准的 Python 类型提示。
FastAPI 建立在 Starlette 和 Pydantic 之上,利用类型提示进行数据处理,并自动生成API文档。
FastAPI 于 2018 年 12 月 5 日发布第一版本,以其易用性、速度和稳健性在开发者中间迅速流行起来。FastAPI 支持异步编程,可在生产环境中运行。