이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 29611|회답: 2

[레디스] Redis는 상세한 설명을 위해 Lua 스크립트를 사용합니다

[링크 복사]
게시됨 2021. 4. 30. 오후 3:42:57 | | | |
Redis에 관해서는, 모두가 자주 사용하며, 가장 많이 사용되는 시나리오는 데이터 캐싱입니다.

복습

Redis 지속성 중 RDB와 AOF의 차이점
https://www.itsvse.com/thread-9555-1-1.html

Docker 설치는 Redis 캐시를 실행합니다
https://www.itsvse.com/thread-8995-1-1.html

예시는 Redis 캐시 침투, 캐시 눈사태, 캐시 붕괴가 무엇인지 설명합니다
https://www.itsvse.com/thread-8968-1-1.html

키를 대량으로 삭제하는 Redis 와일드카드
https://www.itsvse.com/thread-7957-1-1.html

CentOS 7 설치 Redis 5.0.3 튜토리얼
https://www.itsvse.com/thread-7201-1-1.html

CentOS의 php 5.5.7 아래에 redis 확장 프로그램을 설치하세요
https://www.itsvse.com/thread-7200-1-1.html

redis 인스턴스에 저장할 수 있는 키는 몇 개이며, 최대 키와 값은 얼마인가요?
https://www.itsvse.com/thread-6848-1-1.html

redis 중국어 문제는 제대로 표시할 수 없습니다
https://www.itsvse.com/thread-5032-1-1.html

Redis는 원격 접속을 지원합니다
https://www.itsvse.com/thread-5011-1-1.html

Windows가 Redis 서비스를 시작하지 못하고, 오류 1067: 프로세스가 예기치 않게 종료됨.
https://www.itsvse.com/thread-5010-1-1.html

CentOS는 Redis 4.0.8을 설치했습니다
https://www.itsvse.com/thread-4614-1-1.html

Redis는 원격 연결을 설정하고 비밀번호를 접근 가능하게 합니다
https://www.itsvse.com/thread-4101-1-1.html

REDIS는 데이터 캐시를 비워 넣습니다
https://www.itsvse.com/thread-4027-1-1.html

REDIS 지속성 설정 및 끈 지속 상태
https://www.itsvse.com/thread-4012-1-1.html

redis에서 세이브와 BGSAVE의 차이점
https://www.itsvse.com/thread-4010-1-1.html

Redis의 두 가지 지속성 방법과 원칙
https://www.itsvse.com/thread-4009-1-1.html

Redis는 시작하는 방법이 세 가지입니다
https://www.itsvse.com/thread-4008-1-1.html

명령줄 창 숨기기의 Redis 방법
https://www.itsvse.com/thread-2988-1-1.html

레디스 해시 값 문제
https://www.itsvse.com/thread-2587-1-1.html

Redis를 사용하기 전에 반드시 알아야 할 5가지 사항
https://www.itsvse.com/thread-2580-1-1.html

Redis는 기본 포트 번호를 수정하고 접근 비밀번호를 설정합니다
https://www.itsvse.com/thread-2577-1-1.html

Redis 윈도우 64비트 다운로드, 공식 다운로드 주소
https://www.itsvse.com/thread-2576-1-1.html
redis 2.6.0부터 redis는 내장된 Lua 인터프리터를 갖추고 있으며, Lua 스크립트 평가를 파싱하는 eval 명령어를 제공합니다.

문법: eval script numkeys keys args

조건:

eval — Redis는 Lua 스크립트를 파싱하는 명령을 제공합니다

스크립트 — 루아 스크립트

numkeys — 키명 매개변수 집합에 포함된 키 수를 지정합니다

키 — 전역 변수 KEYS 배열로 표현되는 키이름 매개변수 집합으로, 1의 첨자로 시작합니다

args — 전역 변수 배열로 표현되는 키값 매개변수 집합으로, 첨자 1로 시작합니다


Redis에서 Lua 사용의 장점

네트워크 오버헤드를 줄이세요. 네트워크 지연을 줄이기 위해 스크립트 형태로 여러 요청을 동시에 보낼 수 있습니다
원자 조작. REDIS는 전체 스크립트를 실행하며, 그 사이에 다른 명령어는 삽입하지 않습니다. 따라서 스크립팅 과정에서 경쟁 조건과 트랜잭션에 대해 걱정할 필요가 없습니다.
복직. 클라이언트가 보낸 발자국 소리는 redis에 지속적으로 저장되어, 다른 클라이언트가 동일한 로지를 코드를 사용하지 않고도 스크립트를 재사용할 수 있습니다.

스크립트 원자성

Lua 스크립트는 시간 소모적인 연산이나 데드 루프를 가질 수 없으며, 그렇지 않으면 redis가 다른 명령을 받아 스크립트 실행을 멈추지 않습니다

Redis는 모든 스크립트를 단일 Lua 인터프리터로 실행하며, 스크립트가 원자적으로 실행되도록 보장합니다.즉, 스크립트가 실행 중일 때 다른 스크립트나 redis 명령어는 실행되지 않습니다! 따라서 현재 스크립트가 느리게 실행된다면, 서버가 바빠서 명령을 실행할 수 없을 수 있습니다. 예를 들어:

각 스크립트는 최대 실행 시간 제한이 있으며, 기본 값은 5초입니다. 최대 실행 시간은 구성 파일 redis.conf의 lua-time-limit 옵션으로 제어하거나, config get과 config set 명령어를 직접 사용하여 제어할 수 있습니다. 스크립트 실행이 최대 실행 시간에 도달하면 Redis는 이를 적극적으로 종료하지 않고 다음 단계를 수행합니다:

(1) Redis가 스크립트의 시간이 부족하다고 기록합니다

(2) Redis는 다른 클라이언트의 요청을 다시 받기 시작하지만, 스크립트 킬 명령 실행과 노세이브 종료만 허용합니다.

(3) 스크립트가 읽기 작업만 수행한다면, 스크립트 킬 명령을 사용해 즉시 스크립트를 멈춥니다; 스크립트가 쓰기 작업을 수행하면, 현재 데이터가 디스크에 쓰이지 않도록 서버를 멈추는 것은 종료 저장/저장 명령만 허용됩니다. (이 시점에서 서버가 다운되어 데이터가 저장되지 않습니다)


본보기

스크립트를 실행하세요. 매개변수는 키와 값 2이고, 명령어는 다음과 같습니다:


데드루프 스크립트에서 다음 스크립트를 실행하면 redis가 다른 명령을 처리할 수 없게 되어 멈추게 됩니다:

다음 명령어로 문자열 타입의 데이터를 추가하는 스크립트를 사용해 보세요:

더 복잡한 스크립트를 실행하세요. 키 값이 우리가 전달한 값과 같으면 캐시를 삭제하고, 그렇지 않으면 아무 동작도 하지 마세요. 명령어는 다음과 같습니다:

구현 결과는 다음과 같습니다:



(끝)




이전의:.NET/C# 잠금 원칙 모니터가 심층적인 설명을 제공합니다
다음:IIS 삭제 PUT 요청 405 해결책
 집주인| 게시됨 2021. 5. 10. 오전 9:18:34 |

하이퍼링크 로그인이 보입니다.
Redis 스크립트 로드 명령은 스크립트 캐시에 스크립트 스크립트를 추가하는 데 사용되지만, 즉시 실행되지는 않습니다.

EVAL 명령어는 스크립트를 스크립트 캐시에 추가하지만, 입력 스크립트를 즉시 평가합니다.

주어진 스크립트가 이미 캐시에 있다면 별도의 조치가 취해지지 않습니다.

스크립트가 캐시에 추가된 후, EVALSHA 명령어를 통해 스크립트의 SHA1 체크섬을 사용해 호출할 수 있습니다. (이것은 또한 의미한다.)같은 스크립트가 다른 Redis 서버에서 동일한 sha1 값을 실행합니다

스크립트는 SCRIPT FLUSH가 실행될 때까지 무한히 캐시에 머물 수 있습니다.



 집주인| 게시됨 2021. 5. 12. 오전 11:38:55 |
lua 스크립트가 캐시에 있는지 확인하세요


Redis가 재시작되면 Lua 스크립트가 자동으로 삭제됩니다영구적이지 않을 것입니다

면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com