>  기사  >  데이터 베이스  >  Redis에서 원자성을 보장하는 방법

Redis에서 원자성을 보장하는 방법

尚
원래의
2019-06-29 11:26:426894검색

Redis에서 원자성을 보장하는 방법

원자성:

원자성은 데이터베이스 트랜잭션의 기능입니다. 데이터베이스 트랜잭션의 맥락에서 원자성은 트랜잭션(트랜잭션)의 모든 작업이 완전히 완료되거나 완료되지 않고 중간에서 끝나지 않음을 의미합니다.

Redis의 경우 명령의 원자성은 작업을 세분화할 수 없으며 작업이 실행되거나 실행되지 않음을 의미합니다.

Redis 작업이 원자적인 이유:

Redis 작업이 원자적인 이유는 Redis가 단일 스레드이기 때문입니다.

Redis의 동시 성능:

Redis의 API는 원자성 작업이므로 여러 명령도 동시성으로 원자성입니까?

다음 코드가 있습니다:

$redis= newRedis();
$redis->connect('127.0.0.1',6379);
for($i= 0;$iget('val');
$num++;
$redis->set('val',$num);
usleep(10000);
}

두 개의 터미널을 사용하여 위 프로그램을 실행하고 val의 결과가 2000보다 작은 것을 확인합니다. 그러면 프로그램에서 여러 Redis 명령을 실행하는 것이 원자적이지 않다는 것을 알 수 있습니다. 일반적인 데이터베이스 동작과 다른 점은 동일합니다.

위 프로그램에서 원자성을 달성하려면 get 및 set을 incr과 같은 단일 명령 작업으로 변경하거나 Redis 트랜잭션을 사용하거나 Redis+Lua를 사용할 수 있습니다.

Redis의 경우 get, set, eval과 같은 API를 실행하는 작업은 Redis 스레드에 의해 실행됩니다. 이는 Redis의 명령입니다.

Redis 자체에서 제공하는 모든 API는 원자성 작업입니다. Redis의 트랜잭션은 실제로 배치 작업의 원자성을 보장하기 위한 것입니다.

Redis 관련 지식을 더 보려면 Redis 사용 튜토리얼 칼럼을 방문하세요!

위 내용은 Redis에서 원자성을 보장하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.