We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
大多数编程语言本身都提供数组类型,并且可以自定义排序。以lua为例
local list = { {name="a", count=1}, {name="b", count=2 } table.sort(list, function(a, b) if a.count ~= b.count then return a.count < b.count else return a.name < b.name end return false end)
自定义排序,是为了方便调用端,做复杂的排序比较(复合排序)
redis zset为什么通过score定义排序?按我个人理解,这是为了将多维条件转换成一维条件,去隔离调用端各种乱七八槽的关系,如redis需要支持脚本化编程、两钟语言间据结构转换
谈回贵项目,是想在本地lua环境中提供zsert支持。那么将多维条件转换成一维条件就没必要了,lua业务层不需要老是想着如何转换成一维比较。比较函数可以在zsert.new时定义
local zs = zset.new(function(a, b) -- todo someting here end)
The text was updated successfully, but these errors were encountered:
我猜测是效率问题,每对比一次要调用一次lua函数。可以写个 benchmark 对比一下试试?
Sorry, something went wrong.
以上只是初步构想并未实现。如果差别不大,或只是稍微高一丢丢,应该还可以接受。 可以的,我之后可以尝试实现并对比一下。
底层是跳表,排序是在c层实现的,如果通过回调函数支持自定义排序,性能会降低比较多;
这个数据结构本身不是那么通用的,适合用来做排行榜之类,有score的场景。
No branches or pull requests
大多数编程语言本身都提供数组类型,并且可以自定义排序。以lua为例
自定义排序,是为了方便调用端,做复杂的排序比较(复合排序)
redis zset为什么通过score定义排序?按我个人理解,这是为了将多维条件转换成一维条件,去隔离调用端各种乱七八槽的关系,如redis需要支持脚本化编程、两钟语言间据结构转换
谈回贵项目,是想在本地lua环境中提供zsert支持。那么将多维条件转换成一维条件就没必要了,lua业务层不需要老是想着如何转换成一维比较。比较函数可以在zsert.new时定义
The text was updated successfully, but these errors were encountered: