2013-06-25 171 views
4

我需要在Lua中處理大量的Redis數據。通常你會是這樣做:在Redis Lua中處理大數精度的問題

require"bc" 
bc.mul(...) 
bc.mod(...) 

等 但不幸的是Redis的Lua中不支持「要求」。我發現的唯一方法是將用lua編寫的大量庫直接插入到腳本中。

只有這樣的庫,我可以得到我的手:oss.digirati.com.br/luabignum/index.htm

我可以剝去庫的具體腳本的目的,但它仍然是巨大的。有沒有辦法更有效地處理Redis Lua中的大量數據?

UPDATE1:如果我救了整個圖書館成鍵,然後訪問它想:

local BigNumLib = KEYS[1]; 
BigNumLib.BigNum.mul(KEYS[2],KEYS[3]); 

我不知道語法的,也許我需要附上所有的庫在lua表{}中。

+0

我不認爲這裏有一個方便的解決方案,除了通過調整Redis源代碼本身。 –

回答

1

我不熟悉Redis如何處理Lua代碼,但爲什麼將庫本身插入到您的代碼中是個問題?你應該能夠做這樣的事情:

local bc = function() 
    -- insert the code of BigNum.lua here 
    return BigNum 
end 
bc.mul(....) 

的代碼可能已經Lua的5.1之前寫的,所以我不知道是否有任何兼容性問題,但至少應該給你一個起點。

+0

這是一個問題,因爲每個有庫中的請求都是25 KB。 – MidnightCoder

+1

不一定,因爲您可以使用EVALSHA。第一個請求將是25 KB,下面的請求將只有幾個字節。您將節省一些帶寬。但是,Lua引擎在每次執行時都必須解釋25 KB的數據,是的。 –

+0

@MidnightCoder,你可以修剪代碼,只留下你需要的方法。 –