복붙노트

[REDIS] 레디 스 루아 스크립트에서 함수를 여러 번 호출 질수

REDIS

레디 스 루아 스크립트에서 함수를 여러 번 호출 질수

나는 레디 스 루아 스크립트 내부의 기능을 가지고있다. 모든 것이 원활하게 실행하면 나는 함수를 호출합니다. " ','도착 예정 '$'ERR 프로토콜 오류"나는 함수를 여러 번 호출하지만 오류가 발생합니다

var doesExist6 = db.ScriptEvaluate(@" local userName = KEYS[1]


                                                    local function mysplit(inputstr, sep)
                                                            if sep == nil then
                                                                    sep = '%s'
                                                            end
                                                            local t={}  
                                                            local i=1
                                                            for str in string.gmatch(inputstr, '([^'..sep..']+)') do
                                                                    t[i] = str
                                                                    i = i + 1
                                                            end
                                                            return t
                                                    end


                                                    local abc = {}
                                                        abc = mysplit(userName, ':')
                                                        for k = 1, #abc, 1
                                                        do
                                                            print (abc[k])
                                                        end

                                                        local xyz = {}
                                                        xyz = mysplit(userName, ':')
                                                        for k = 1, #xyz, 1
                                                        do
                                                            print (xyz[k])
                                                        end

                                                        return xyz[1]..abc[2]",

            new RedisKey[] { "UserDetails:" + "DummyUser" });

나는 테이블을 채우기 위해 한 번만) 함수 mysplit를 (호출 할 경우 'ABC'다음 모든 실행이 원활하지만 난 그게 "ERR 프로토콜 오류 오류가 발생합니다 XYZ 테이블을 채 웁니다) (두 번째 함수 mysplit를 호출하는 경우 : 예상 '$' " ''얻었다.

가능한 이유는 무엇을 할 수 있을까? 그것은 레디 스 루아 스크립트 내부 기능을 허용하지 않는가요?

해결법

    from https://stackoverflow.com/questions/35335197/cant-call-a-function-multiple-times-in-redis-lua-script by cc-by-sa and MIT license