ServiceStack.Redis
을 사용하여 C#을 통해 redis에 연결하려고합니다.루아 스크립트 최적화
아래의 코드는 지정된 키를 기준으로 숫자의 유효성을 검사하는 코드입니다.
argv[1]
는
argv[2]
이 번호
string strScript = " local intCurrentVal = redis.call('GET', '' .. ARGV[1] .. ''); \n"
+ "if (tonumber(intCurrentVal) <= 0) then return 1 elseif ( (tonumber(intCurrentVal)) - (tonumber('' .. ARGV[2] .. '')) < 0) then return 0 end;"
+ "local intUpdatedVal = redis.call('SET', '' .. ARGV[1] .. '',(intCurrentVal - tonumber('' .. ARGV[2] .. '')));"
+ "local intCurr = redis.call('GET', '' .. ARGV[1] .. ''); return intCurr";
논리 걸음 키이다
- 전류 값이 0으로 다음 작거나 안
- 선택하면 현재 값을 얻을
- cur 임대 값 - 전달 0 다음 (현재 값 - 전달)을 설정하지 미만입니다 - 현재 값이 경우 전달 된 값 미만 O
- 이어야한다 현재의 값으로
- 현재 값을 얻을
성능을 위해 다음 lua 스크립트를 최적화하고 조정할 수 있습니까? 도와주세요.
내부 트랜잭션 블록이어야합니다. – user2771292
어떤 거래 블록입니까? – Schollii
초당 수천 건의 트랜잭션에 대해 이야기하고 있습니까? 프로필을 작성하고 Lua 스크립트가 문제인 것을 발견 했습니까? – dualed