StackExchange.Redis 공식 문서(8)[스 크 립 트]
저 희 는 IServer.ScriptLoad(Async),IServer.ScriptExists(Async),IServer.ScriptExists(Async),IDatabase.ScriptEvaluate,그리고 IDatabase Async.ScriptEvaluateAsync 방법 으로 Lua 스 크 립 트 를 실행 하고 이 방법 으로 Lua 스 크 립 트 를 Redis 에 제출 합 니 다.
LuaScript 클래스 를 사용 하여 더 복잡 한 Lua 스 크 립 트 를 실현 할 수 있 습 니 다.LuaScript 클래스 는 스 크 립 트 의 작성 과 인자 의 제출 을 더욱 간단하게 하고 더 뚜렷 한 변수 이름 을 사용 할 수 있 도록 합 니 다.
LuaScript 의 예 는 다음 과 같다.
const string Script = "redis.call('set', @key, @value)";
using (ConnectionMultiplexer conn = /* init code */)
{
var db = conn.GetDatabase(0);
var prepared = LuaScript.Prepare(Script);
db.ScriptEvaluate(prepared, new { key = (RedisKey)"mykey", value = 123 });
}
LuaScript 클래스 는 ARGV[someIndex]의 요구 에 부합 하도록 스 크 립 트 의 형식 을 다시 썼 습 니 다.전 달 된 인자 가 RedisKey 형식 이 라면 자동 으로 KEYS 집합의 일부분 으로 전 송 됩 니 다.
모든 대상 의 공개 필드 나 속성 구성원 은 Lua 스 크 립 트 에서@을 접두사 로 사용 할 수 있 습 니 다.예 를 들 어 클래스 에 name 의 속성 이 있 으 면 변 수 는@name)의 변 수 를 사용 하고 Evaluate 에서 호출 된 Hash 인자 입 니 다.멤버 유형 은:
Lua 스 크 립 트 를 Redis 로 다시 보 내지 않도록 LuaScript.Load(IServer)를 호출 하 는 방법 으로 LuaScript 대상 을 LoadedLuaScript 로 변환 할 수 있 습 니 다.LoadedLuaScript 는 EVALSHA 명령 을 실행 할 수 있 습 니 다.(스 크 립 트 가 긴 경우 스 크 립 트 를 호출 할 때마다 전체 스 크 립 트 를 Redis 에 전달 해 야 하면 대역 폭 을 많이 차지 합 니 다.이 문 제 를 해결 하기 위해 레 디 스 는 개발 자가 스 크 립 트 내용 의 SHA 1 요약 을 통 해 스 크 립 트 를 실행 할 수 있 도록 EVALSHA 명령 을 제 공 했 는데,이 명령 은 EVAL 과 마찬가지 로 스 크 립 트 내용 을 스 크 립 트 내용 의 SHA 1 요약 으로 바 꾸 는 것 에 불과 하 다.)
LoadedLuaScript 의 예 는 다음 과 같 습 니 다.
const string Script = "redis.call('set', @key, @value)";
using (ConnectionMultiplexer conn = /* init code */)
{
var db = conn.GetDatabase(0);
var server = conn.GetServer(/* appropriate parameters*/);
var prepared = LuaScript.Prepare(Script);
var loaded = prepared.Load(server);
loaded.Evaluate(db, new { key = (RedisKey)"mykey", value = 123 });
}
LuaScript 와 LoadedLuaScript 의 모든 방법 은 비동기 적 인 방법(*Async)이 있 습 니 다.Evaluate/EvaluateAsync 방법 으로 Executable Script 속성의 값(Lua 스 크 립 트)을 Redis 에 제출 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity3D 시작하기(rolling ball) - 학습 노트만약 이 방법이 성공하지 못하면 각 구성 요소를 분류하여 다운로드할 수 있습니다. 항목은 3D를 선택하고 가져온 리소스는 None으로 선택할 수 있습니다. Scene: 각 게임마다 몇 개의 장면으로 구성되어 있으며,...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.