甘蔗知行阁
Flask、Redis、MySQL
这个项目主要是围绕md文档进行一些管理和阅读,并且支持在编辑md文档时添加图片(图片会保存至服务器)。后续有时间会引入AI Agent 来对网站中的文章进行针对与用户技术栈的学习建立
鼠标悬浮可查看更多本文探讨了在Flask博客项目中采用MeiliSearch替代Elasticsearch实现全文搜索的实践方案。通过对比两者在资源消耗、部署复杂度和中文支持等方面的差异,阐述了MeiliSearch在轻量级场景下的优势。文章详细介绍了Docker部署、索引同步机制以及封装搜索服务的关键技术点,包括自动补全接口设计、AI摘要同步策略和前端防抖优化。该方案通过RESTful API简化了搜索功能集成,在不损失搜索质量的前提下显著降低了系统开销。
文章介绍了博客平台中收藏功能的性能优化方案,采用Write-Behind模式结合Redis缓存和MySQL批量更新。通过异步处理机制将用户操作立即写入Redis并标记为脏数据,再由Celery定时任务批量同步到MySQL,使响应时间从80ms降低到30ms。关键设计包括使用Redis的SPOP原子操作防止数据丢失、实现失败回滚机制保障数据最终一致性,并分析了该模式适用的非金融类高频写场景。
本文深入分析了SQLAlchemy中由于Autoflush机制导致的隐蔽Bug问题。当开发者错误地将字典赋值给ORM对象列属性后,后续触发Lazy Loading时会自动执行Flush操作,而PyMySQL驱动不支持将字典类型作为普通列参数,导致TypeError。问题根源在于对SQLAlchemy会话管理机制的不了解,包括脏数据跟踪、自动刷新等设计原理。解决方案包括使用临时属性存储非持久化数据、转字典后修改、临时关闭Autoflush或确保类型匹配。该案例警示开发者需要深入理解ORM框架底层机制,区分临时数据与持久化数据的处理方式。