flask连接redis

from flask import Flask, render_template, flash, redirect, url_for,session, logging, request
# from data import Articles
# from flask_mysqldb import MySQL
# from wtforms import Form, StringField, TextAreaField, PasswordField, validators
# from passlib.hash import sha256_crypt
# from functools import wraps
import redis
from flask_session import Session
import pickle
import json
import re
from flask_bootstrap import Bootstrap

app = Flask(__name__)
bootstrap = Bootstrap(app)


class Redis:
    @staticmethod
    def connect():
        r = redis.StrictRedis(host='localhost', port=6379)
        return r

    #将内存数据二进制通过序列号转为文本流,再存入redis
    @staticmethod
    def set_data(r,key,data,ex=None):
        r.set(key,pickle.dumps(data),ex)

    # 将文本流从redis中读取并反序列化,返回返回
    @staticmethod
    def get_data(r,key):
        data = r.get(key)
        if data is None:
            return None
        return pickle.loads(data)

@app.route('/<key>', methods=['GET', 'POST'])
# @cache.cached(key_prefix=cache_key)
def login(key):
	# L_phone = []
	cached_redis_remark = ""
	r = Redis.connect()
	Redis.set_data(r, '18333608826', '20190910')
	Redis.set_data(r, '18333608826', '201909')
	times = Redis.get_data(r, '%s' % key)
	# phone = session.hscan_iter('hash1')
	if request.method == 'POST' and times:
		json.dumps(key)
		json.dumps(times)
		return  render_template('index.html', key = key, times = times)
	else:
		msg = "check your phonenumber is correct!"
		# session['username'] = select
		return  render_template('index.html', key = key, msg = msg)


if __name__ == '__main__':
    app.run(debug=False)


# can add debug=True in order to start in development mode

 

在嵌入式系统中使用 Redis 需要综合考虑资源限制、性能需求以及功能适配性。Redis 是一个内存数据库,通常运行在通用计算平台上,但在资源相对受限的嵌入式环境中,也可以通过合理配置和优化实现其运行。 ### Redis 在嵌入式系统中的部署方式 1. **交叉编译与移植** Redis 是用 C 语言编写的,支持多种操作系统和平台。因此,可以通过交叉编译的方式将其移植到嵌入式系统中。通常需要适配 Redis 的依赖库(如 jemalloc、Lua 引擎等)以及调整 Redis 的网络模块以适应嵌入式平台的网络栈。 2. **内存优化** 嵌入式系统往往内存有限,因此需要对 Redis 的内存使用进行严格控制。可以设置 `maxmemory` 参数来限制 Redis 的最大内存使用量,并结合合适的淘汰策略(eviction policy)来管理数据[^2]。 3. **持久化策略调整** Redis 的持久化机制(如 RDB 和 AOF)在嵌入式系统中可能需要进行调整。由于嵌入式设备的存储介质(如 Flash)存在写入寿命限制,建议使用 RDB 模式并减少持久化频率,以延长存储寿命[^2]。 4. **模块化裁剪** Redis 支持模块化扩展,可以动态加载共享库来扩展功能。在嵌入式系统中,可以只加载必要的模块,避免加载不必要的功能组件,从而降低资源消耗[^1]。 5. **网络配置优化** 嵌入式设备可能不具备高性能网络接口,因此建议在 Redis 配置中优化网络参数,例如减少客户端最大连接数、限制最大请求大小等,以适应嵌入式网络环境。 ### 示例:在嵌入式系统中启动 Redis 以下是一个简化版的 Redis 启动脚本示例,适用于嵌入式 Linux 系统: ```bash #!/bin/sh # redis-start.sh # 设置内存限制 REDIS_MAXMEMORY="10mb" # 启动 Redis 服务 /usr/local/bin/redis-server --maxmemory $REDIS_MAXMEMORY --maxmemory-policy allkeys-lru & ``` ### 适用场景 - **缓存服务**:适用于需要快速访问本地缓存数据的嵌入式设备。 - **消息队列**:利用 Redis 的发布/订阅机制实现嵌入式系统内部或与云端的消息通信。 - **状态管理**:用于保存设备运行时的临时状态信息,便于远程监控和调试。 ### 注意事项 - **资源监控**:定期监控内存、CPU 和磁盘使用情况,确保 Redis 不会导致系统资源耗尽。 - **安全性**:在嵌入式设备中启用 Redis 访问控制(如密码认证),防止未授权访问[^4]。 - **日志管理**:合理配置日志级别,避免过多日志占用有限的存储空间。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值