laravel프로젝트 중 세션으로 회원로그인 관리를 하고있었느데 기본값이 file이다.
문제는 file로 관리했을때 싱크가 맞지않아 로그인이 풀리거나 안되는 경우가 발생했다.
해결방법은 redis나 db같은 외부저장소로 세션을 관리해야하는데 db는 이미 너무 많이 부담을 하고있는것 같아 redis를 사용하기로 했다.
Redis
메모리 기반 데이터 구조 저장소입니다. 주로 데이터베이스, 캐시 및 메시지 브로커로 사용됩니다.
Redis는 캐싱, 세션 관리, 메시지 큐 및 리더보드와 같은 다양한 사용 사례에 적합한 데이터베이스입니다.
주요 특징과 기능
- 메모리 기반: Redis는 메모리에 데이터를 저장하고 관리하기 때문에 매우 빠르게 작동합니다. 이는 주로 캐싱 및 빠른 데이터 검색을 위해 사용됩니다.
- 다양한 데이터 구조: Redis는 문자열, 해시, 리스트, 세트, 정렬된 세트 및 비트 맵과 같은 다양한 데이터 구조를 지원합니다. 각 데이터 구조는 특정한 용도에 맞게 최적화되어 있습니다.
- 지속성: Redis는 디스크에 데이터를 저장하고 재시작 후에도 데이터를 유지할 수 있습니다. 이를 위해 주기적으로 스냅샷을 찍거나 변경 사항을 로그 파일에 기록합니다.
- 클라이언트-서버 모델: Redis는 클라이언트와 서버 간의 통신을 위한 단순한 프로토콜을 제공하며, 다양한 프로그래밍 언어로 작성된 다양한 클라이언트 라이브러리를 지원합니다.
- 고성능: Redis는 단일 쓰레드에서 작동하며 비동기식 I/O 및 다양한 최적화 기법을 사용하여 높은 처리량과 낮은 지연 시간을 제공합니다.
- 분산 시스템 지원: Redis는 마스터-슬레이브 복제 및 클러스터링과 같은 기능을 통해 분산 시스템 환경에서도 사용할 수 있습니다.
결국 redis는 백에서 상태관리를 할수있게 해주는 인메모리 기반의 NoSql DB라고 생각된다.
Redis 설치
Redis - The Real-time Data Platform
Developers love Redis. Unlock the full potential of the Redis database with Redis Enterprise and start building blazing fast apps.
redis.io
공식 사이트로 이동후 설치를 진행 하자
Products -> Downloads
Redis OSS & Stack -> Installing Redis OSS
자신의 os선택시 설치방법이 나온다.
관리자모드로 PowerShell 실행후
wsl --install
username과 password 설정
wsl접속
sudo apt-get update 리눅스 업데이트
sudo apt-get install redis
redis설치 Do you want to continue? [Y/n] Y 추가 패키지 설치
redis서버 시작 sudo service redis-server start
redis 명령 도구 실행 redis-cli
ping을 날렸을때 PONG이 오면 성공
window script작성
이제 부팅시 자동으로 redis서버가 켜지도록 bat스크립트를 작성해야한다.
start_redis.bat
@echo off
set max_retries=3
set retry_delay_seconds=3
:retry
wsl sudo service redis-server start
if errorlevel 1 (
echo Failed to start Redis server.
set /a max_retries-=1
if %max_retries% gtr 0 (
echo Retrying in %retry_delay_seconds% seconds...
timeout /t %retry_delay_seconds% /nobreak > nul
goto retry
) else (
echo Maximum retries exceeded. Exiting...
exit /b 1
)
)
echo Redis server started successfully.
rem Wait for Redis server to start
timeout /t 5
rem Connect to Redis server using redis-cli
wsl redis-cli
exit /b 0
해당 스크립트를 실행 해 보면
비밀번호를 입력하면 redis서버가 실행됐다는 문구가 뜨고 cli가 잘 동작하는것을 볼수있다.
비밀번호도 자동화를 할수는 없기 때문에 쓰기싫다면 wsl에서 해당 user의 설정에서 비밀번호를 안쓰도록 설정하면 된다.
wsl비밀번호 사용 안하기 설정
wsl 접속후 sudo visudo 접속
방향 키로 내려
username ALL=(ALL) NOPASSWD: ALL 설정값을 추가해 비밀번호를 받지않도록한다.
Ctrl + O를 눌러 저장 문구를 확인
Enter를 누르고 Ctrl + X로 빠져나간다.
다시 bat스크립트를 실행해보면
비밀번호를 쓰지않고 바로 접속되는것을 확인할수 있다.
window 스케줄 추가
이제 부팅시 자동으로 스크립트가 실행되도록 window의 스케줄에 추가해줘야한다.
실행 창에 taskschd.msc를 입력하여 작업 스케줄러를 열어준다.
기본 작업 만들기를 눌러 스케줄을 생성한다.
스케줄이 추가된것을 볼수있다
잘 작동하는지 재부팅 해보니 동작을 안했다.
더블 클릭해 설정중
로그온할 때로 수정해주니
부팅시 자동으로 실행이 잘 됐다.
RedisInsight같은 툴을 이용하면 데이터의 내용을 쉽게 확인할수있다.
RedisInsight - The Best Redis GUI
RedisInsight provides an intuitive and efficient graphical interface for Redis, allowing you to interact with your databases and manage your data.
redis.io
'DB' 카테고리의 다른 글
My sql workbench error : could not acquire management access for administration (0) | 2024.03.07 |
---|