๐ [๋ฌธ์] Redis Lock ์ฌ์ฉ๋ฐฉ๋ฒ #785
Chuseok22
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
๐๏ธ ์ค๋ช
RedisConfigํด๋์ค์์ redissonClient Bean์ ์์ฑํฉ๋๋คconnectionPoolSize, connectionMinimumSize๋ ํ์ฌ ๊ฐ๊ฐ 10, 5๋ก ํ ๋น๋์ด์์ต๋๋ค.
์ถํ application-prod.ymlํ์ผ์์ ์๋ง๋ ๊ฐ์ผ๋ก ์์ ์์ ์ ๋๋ค.
RedisLockManagerํด๋์ค๋ ์์ฑํ์ต๋๋ค.์ฝ๋๋ ์์ ๊ฐ์ผ๋ฉฐ Lock์ ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ก์ง์์
redisLockManager.executeLock(lockKey, task)์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.LockTast<T> task๋ ํจ์ํ ์ธํฐํ์ด์ค๋ก ์์ฑํ์ผ๋ฉฐ ๋๋ค์์ผ๋ก ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.์ฌ์ฉ์์ (
private final RedisLockManager redisLockManager์์กด์ฑ ์ฃผ์ ๋์ด์์ต๋๋ค)ํด๋น ์์์์๋
return null์ฒ๋ผ ๋ฐํ๊ฐ์ด null ์ด์ง๋ง ํ์์ ๋ฐ๋ผ ์ํ๋ ๋ฐํ๊ฐ์ ๋ฐํํ์๋ฉด ๋ฉ๋๋ค.์ฐ๊ฒฐ๋ pr ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค #660
<์ฐธ๊ณ >
Redis Lock ์์ waitTime์ Lock์ ์ป๊ธฐ์ํด์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด๊ณ leaseTime์ Lock์ ์๋์ผ๋ก ํด์ ํ๋ ์๊ฐ์ ๋๋ค.
์ด๋ leaseTime์ ์ถฉ๋ถํ ํฐ ์๋ก ์ค์ ํ๊ณ finally๋ถ๋ถ์ ์ฃผ์์ฒ๋ฆฌํ ๋ค ์คํํด๋ณด๋ฉด Lock์ ์ป์ ๋ค์ leaseTime๋์ ํด์ ํ์ง์๊ณ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
application-dev.ymlRedisLockManager-> finally ๋ถ๋ถ ์ฃผ์์ฒ๋ฆฌ ํ ์งํ (์ฃผ์์ฒ๋ฆฌํ์ง ์์ผ๋ฉด ์๋์ผ๋ก ํด์ ๋จ)ํ์ฌ ๋ก์ปฌ์์๋ docker๋ฅผ ํตํด์ Redis๋ฅผ ์ฌ์ฉ์ค์ด๊ธฐ์ docker๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค
(๋ก์ปฌ์ Redis๋ฅผ ์ค์นํ๋ฉด ๋ ์ฌ์^^)
sudo docker ps(์คํ์ค์ธ ์ปจํ ์ด๋ ํ์ธ)docker exec -it redis redis-cli(redis ์ปจํ ์ด๋ ์ ์)AUTH myPassword(password ์ค์ ํ ๊ฒฝ์ฐ ์ ๋ ฅ)TTL {lockKey}(lockKey์ ํด๋นํ๋ Lock์ ๋จ์ ์๊ฐ ํ์ธ)๐โโ๏ธ ๋ด๋น์
All reactions