Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[OSPP] Pika 支持 Lua 脚本并引入 LuaJIT 解释器 #1445

Closed
yaoyinnan opened this issue May 6, 2023 · 7 comments · Fixed by #1724
Closed

[OSPP] Pika 支持 Lua 脚本并引入 LuaJIT 解释器 #1445

yaoyinnan opened this issue May 6, 2023 · 7 comments · Fixed by #1724
Assignees
Labels
enhancement ospp https://summer-ospp.ac.cn/

Comments

@yaoyinnan
Copy link
Contributor

yaoyinnan commented May 6, 2023

基本信息

项目难度:基础
支持语言:中文/英文
项目社区导师:姚胤楠
导师联系邮箱:yaoyinnan@foxmail.com
技术领域:C++、Lua、NoSQL
开源协议:BSDv3

项目简述

Lua 语言具有简洁、轻量级、易于学习等特点,使得它成为一种优秀的脚本语言。与其他脚本语言相比,Lua 不仅具有高性能、低内存占用等优点,而且支持面向对象、函数式编程、协程等特性,可以帮助开发者快速编写出高效的脚本程序。
LuaJIT 是一个高性能的 Lua 解释器,它可以在运行时将 Lua 代码编译成本地机器代码,从而提高执行速度。
本项目需要为 Pika 实现 Lua 的支持并引入 LuaJIT 解释器以提高执行 Lua 脚本的性能。通过嵌入 Lua 解释器,可以在运行时动态加载 Lua 脚本,实现数据转换、数据过滤、业务逻辑处理等功能。这使得 Pika 可以更好地满足不同应用场景的需求,从而提高了 Pika 的灵活性和适用性。

项目产出要求

  1. 为题目设计整体的解决方案,定期产出相关文档;
  2. 实现 Lua 脚本支持,引入 LuaJIT 解释器提高性能;
  3. 测试和验证;
  4. 能够通过 PR 形式提交代码并通过 Pika 社区审核后合并。

项目技术要求

  • 熟悉 C++、Lua
  • 熟悉 Redis/Pika 基本使用
  • 熟悉 Pika 或其他 KV 存储
  • 熟悉 Lua 解释器
@yaoyinnan yaoyinnan added the ospp https://summer-ospp.ac.cn/ label May 6, 2023
@A2ureStone
Copy link
Contributor

i am interested with it

@lcq1509529
Copy link

申请意向+1

@AlexStocks
Copy link
Collaborator

AlexStocks commented Jul 7, 2023

    * 李超群,跟ruilin沟通过,先看一下 redis 2.0 支持实现方式(曾支持lua),看pika数据结构,需要提一个测试方案,下周之前交申请书初版
      * 不参加了
    * 冯智森,redis使用的是原生的lua接口,tx 使用一些库在lua中调用pika的,通过库导出到lua层,需要做解析的客户端。Pika目前还不支持事务,后面配合支持
    * 0520 冯智森给大家讲解lua相关分享
    * 0527 超群、智森的设计文档已经给出,待导师审核;待处理问题:文档未提到C++如何适配C
    * 0603 智森 提交了,调研 redis 2.6 lua 实现,内部用 lua官方接口,跟lua虚拟机交互,pika代码是c++的,最好使用一个第三方库来兼容cpp oop特性,比如https://github.com/trumanzhao/luna 调研一下最终用哪个repo。
    * 0610 将 redis 侧相关代码迁移过来。
    * 0617 在移植lua的三方库
    * 0624 继续跟进
    * 0701 移植了redis lua 虚拟机,处理redis 和pika差异问题,redis参数校验出错可以返回、pika的逻辑需要修改后解决
    * 0708 预计下周提交初版代码
    * 0722 单测把redis的拉了过来,在写项目报告方便大家review 
    * 0805 集成了luaJIT,写好了报告的初版
    * 0819 PR 待 review

@A2ureStone
Copy link
Contributor

redis里使用单线程执行命令,命令无法并发,所以在执行EVAL的时候没有其他命令执行,这是原子性的保证。pika执行命令是多线程的,如何阻塞其他命令感觉跟事务是差不多的,想要参考一下设计的方案。

@yaoyinnan
Copy link
Contributor Author

PR已经提了,需要review,zhisen之后拆一拆实现的功能和引入的外部模块

@lithbitren
Copy link

lua脚本支持得怎样了?

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically.


How well is Lua script supported?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement ospp https://summer-ospp.ac.cn/
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants