ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Redis - docker 설치 및 접속
    웹 개발/DBMS 2022. 2. 17. 10:23

    Redis 기본 정보

        사이트 : https://redis.io/

                   https://redis.io/documentation

                   https://redis.io/modules              

     

        기본 포트 : 6379

     

        접속 명령 : # redis-cli

                       # redis-cli -h 127.0.0.1 -p 6379 -a 'passwod'

                       # redis-cli -a 'passwod'

     

                       # redis-cli
                       127.0.0.1:6379> auth "dev"
                       OK

                       127.0.0.1:6379> CONFIG SET requirepass "변경할 비밀번호"


    명령어 형식

        SET key "value" [EX seconds] [PX milliseconds] [NX|XX] : 기본 입력 형태로 키와 값을 입력, 키가 있으면 값을 변경
        SETEX key seconds "value" : 키, 값과 보존 시간 설정하여 등록 
        SETNX key "value"  : 키 없을 때만 값 저장 (SET if Not eXists의 약어)
        GET key : 기본 출력 형태, 키에 값이 없으면 nil을 반환

        GETSET key value : 값을 읽고 난 후 값을 변경, 값이 없으면 nil을 반환 후 새로운 값 저장
        STRLEN key : 값의 길이 리턴, 0이면 키가 없음 
        SETRANGE key offset_value : key의 값 중 오프셋 시작부터 문자열을 덮어 씀

            예) SET ke1 "abcde fghij"
                 SETRANGE ke1 6 "REDIS"
                 get ke1
                 "abcde REDIS"

        GETRANGE key 시작offset_value 끝offset_value

            : 시작 offset_value=0, 끝offset_value -1 이면 전체, 값 중 offset 범위 많음 읽음
            offset_value : 양수 0 ~ n로 앞에서부터 읽기, 음수 -n ~ -1로 뒤에서부터 읽기
            즉, SET ke1 "abcde fghij"에서 'f'의 위치는 양수 6, 음수 -5의 값을 같음

            예) GETRANGE ke1 0 4
                "abcde"

        INCR key : 키의 값을 1씩 증가, 값이 없으면 0을 기본값으로 함

            예) incr cnt1    (set 등록 없이 바로 incr하여도 동작됨)
                get cnt1
                "1"

        DECR key : 키의 값을 1씩 감소, 값이 없으면 0을 기본값으로 함

            예) decr cnt2    (set 등록 없이 바로 decr하여도 동작됨)
                decr cnt2
                get cnt2
                "-2"

        INCRBY key increment : 키의 값을 increment씩 증가, 값이 없으면 0을 기본값으로 함

        DECRBY key increment : 키의 값을 increment씩 감소, 값이 없으면 0을 기본값으로 함

        INCRBYFLOAT key increment: 키의 값을 소숫점 단위의 increment씩 증/감소, 값이 없으면 0을 기본값으로 함

             예) SET ke3 100.5
                  INCRBYFLOAT ke3 0.1
                  "100.6"
                  INCRBYFLOAT ke3 -5
                  "95.6"

        MSET key value [key value...] : 키 값 키 값... 형식으로 등록/수정, 즉 여러 데이터 한번에 등록

        MGET key [key ...] : 나열된 키들에 대한 값을 조회, 즉 한번에 여러 데이터 조회

            예) MSET ky21 "va21" ky22 "va22" ky23 "va23"
                 MGET ky21 ky22 ky23
                 1) "va21"
                 2) "va22"
                 3) "va23"

        MSETNX key value [key value...]: MSET 동일 하나, 한개라도 KEY가 존재하면 전체 등록 취소함

            예) MSETNX k31 "hello1" k32 "hello2" k33 "hello3"    #모두 정상 등록됨
                 MSETNX k32 "hello3" k34 "hello4" k35 "hello5"    #모두 등록 취소됨

        PSETEX key milliseconds value : 데이터 보관 유효시간을 밀리 초로 지정, SETEX 동일

            예) PSETEX ke1 3000 "Value1"  # 3초 뒤 삭제

        APPEND key value : key의 값 끝에 문자열 추가, 키가 없음  등록함(기존에 숫자여도 문자열로 인식하여 추가)

            예) append k51 100
                 append k51 100
                 get k51
                 "100100"   

     

     

    (단순 키형) 1개 키에 1개 값 등록

        key 지정, 값 저장/수정: set key value    (예: set m1 KorMan, set m1 "kor Man" Ex 10)
        Key 지정, 값 저장 - 유효.보존 시간(초) 설정: setex key time(sec) value    (예: setex m1 30 KorMan)
        key 지정, 값 일기: get key    (예: get m1)
        key 지정, 데이터 삭제: del key    (예: del m1)

     

    (리스트형) 1개 키에 n개 값

        리스트 데이터 추가: lpush key value1, value2 ...    
        리스트 데이터 조회: lrange key startindex endindex    


            예:  lpush key11 value1, value2
                 lpush key11 value1, value2, value3, value4, value5, value6, value7, value8
                 lrange key11 0 -1
                 1) "value8"
                 2) "value7,"
                 3) "value6,"
                 4) "value5,"
                 5) "value4,"
                 6) "value3,"
                 7) "value2,"
                 8) "value1,"
                 9) "value2"
                10) "value1,"

     

    Redis Docker 실행 

        - 컨테이너 실행

          docker run -d -p 6379:6379 --name myRedis redis --requirepass "dev" 

     

        - 접속 윈도우 도커 터미널 접속 후

           # redis-cli
           127.0.0.1:6379> auth "dev"
           OK

     

    Redis Docker

        Docker Hub : https://hub.docker.com/_/redis 

    docker pull redis
    
    docker run --name some-redis -d redis
    docker run --name some-redis -d redis redis-server --save 60 1 --loglevel warning
    docker run -it --network some-network --rm redis redis-cli -h some-redis
    
    FROM redis
    COPY redis.conf /usr/local/etc/redis/redis.conf
    CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
    
    docker run -v /myredis/conf:/usr/local/etc/redis \
               --name myredis redis redis-server /usr/local/etc/redis/redis.conf

     

    Redis Docker 설치 정보

     

        docker redis 설치 출처: https://emflant.tistory.com/235    

    docker run --name my-redis \
        -p 6379:6379 \
        --network redis-net \
        -v my/folder:/data \
        -d redis:alpine redis-server --appendonly yes

     

        Redis 설치 with docker 출처: https://littleshark.tistory.com/68

    # 기본 
    docker run -d --name redis -p 6379:6379 --network redis-net redis 
    
    # 볼륨 설정하기 
    docker run --name redis -p 6379:6379 \
               --network redis-net \
               -v /Users/jiyeonpark/Desktop/redisvolume 
               -d redis:latest redis-server --appendonly yes

     

        Docker Redis 설치 : https://dingrr.com/blog/post/redis-도커docker로-redis-설치하기

    # 네트워크 생성
    docker network create redis-net
    docker run --name dingrr \
        -p 6379:6379 \
        --network redis-net \
        -d redis redis-server --appendonly yes
    
    # redis-cli 로 실행한 dingrr Redis 서버에 접속
    docker run -it --network redis-net --rm redis redis-cli -h dingrr

     

        Docker Redis 설치, 접속: https://gofnrk.tistory.com/84

    #신규 Container 생성, 실행
    docker run --name redis-container -p 6379:6379 redis --requirepass admin12#$
    docker run --name redis-container -p 6379:6379 -dit --restart unless-stopped redis
    
    #컨테이너에 터미널 접속
    docker exec -it redis-container /bin/bash

     

        docker-compose로 올리기:  https://juntcom.tistory.com/120

    version: "3.3" # 파일 규격 버전 
    services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 
      redis: 
        container_name: redis
        hostname: redis
        image: redis
        ports:
          - "6379:6379" 
          
      redis-commander: 
        container_name: redis-commander
        hostname: redis-commander
        image: rediscommander/redis-commander:latest
        restart: always
        environment:
          - REDIS_HOSTS=local:redis:6379
      	ports:
          - "8081:8081"

     

    (끝)

    댓글

Designed by Tistory | Siseon i.