복붙노트

[REDIS] 독특한 원자 번호 생성기로 레디 스는 - 피하기 경쟁 조건에 웹 앱 안전한 방법 스레드

REDIS

독특한 원자 번호 생성기로 레디 스는 - 피하기 경쟁 조건에 웹 앱 안전한 방법 스레드

나는 독특한 원자 번호 생성기로 레디 스를 사용할 계획입니다. 하지만, 내 관심사는 여러 브라우저에서 simulatoneous 웹 요청이있을 수 있습니다. 나는 궁금했다, 다음과 같은 작업이 원자 만들 수있는 일반적인 방법은 무엇입니까?

get id from redis
if id is not found
    insert id as 0 into redis
else
    store the id in a variable
    increase id by one
    store the new id back to redis

내가 데스크톱 응용 프로그램 또는 모바일 앱에 있다면, 나는 피하기 경쟁 조건에 자바 키워드 동기화 사용할 수 있습니다.

그러나, 방법에 대한 PHP 웹 응용 프로그램을 검색 하시나요?

해결법

  1. ==============================

    1.당신이 순차적으로 ID를 생성하기 위해 찾고 가정하면, 경쟁 조건에 대한 걱정없이 레디 스 및 INCR 명령을 사용할 수 있습니다. 레디 스이기 때문에 (대부분) 단일 스레드는, 당신은 모든 요청이에서 자신의 고유 ID를 얻을 것이다 보장됩니다.

    당신이 순차적으로 ID를 생성하기 위해 찾고 가정하면, 경쟁 조건에 대한 걱정없이 레디 스 및 INCR 명령을 사용할 수 있습니다. 레디 스이기 때문에 (대부분) 단일 스레드는, 당신은 모든 요청이에서 자신의 고유 ID를 얻을 것이다 보장됩니다.

    또한, 당신은 레디 스 할 것이기 때문에 그것을 / 아이디 키의 존재를 확인 초기화 당신이 (당신이 존재하지 않는 키를 INCR의 경우는 먼저 자동으로 0으로 생성 및 설정됩니다 즉)에 대한 필요하지 않습니다.

  2. from https://stackoverflow.com/questions/24028171/redis-as-unique-atomic-id-generator-thread-safe-way-for-web-app-to-avoid-race by cc-by-sa and MIT license