2 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
我會(huì)使用 https://github.com/tidwall/gjson 來(lái)查詢編組的故事

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
由于在單個(gè)鍵上存儲(chǔ)序列化的 JSON 數(shù)組,因此最接近的是運(yùn)行 Lua 腳本,該腳本使用該腳本解析存儲(chǔ)在鍵上的 JSON,根據(jù)值篩選條目,然后重新序列化結(jié)果并將其保存在相同鍵或不同鍵上。這將更快,因?yàn)樗鼘⑼耆赗edis服務(wù)器上執(zhí)行,但也更難調(diào)試/更容易出錯(cuò)。EVALstatus
您可以使用 來(lái)解析 JSON 并重新序列化它。cjson.decodecjson.encode
像這樣:
local myKey = KEYS[1]
local status = ARGV[1]
local raw = redis.call("GET", myKey)
local orders = cjson.decode(raw)
local filteredOrders = {}
local index = 1
for order, _ in ipairs(orders) do
if order["status"] == status then
filteredOrders[index] = order
index = index + 1
end
end
local resultRaw = cjson.encode(filteredOrders)
redis.call("SET", myKey, resultRaw)
- 2 回答
- 0 關(guān)注
- 209 瀏覽
添加回答
舉報(bào)