1.1 - edis 의 데이터 구조

6324 단어
1. 5 가지 데이터 형식:
  • 1. 문자열 (String)
  • 2. 문자열 목록 (list)
  • 3. 질서 있 는 문자열 집합 (sorted set)
  • 4. 해시 (hash)
  • 5. 문자열 집합 (set)
  • 1.1 문자열 (String)
    상용 명령
  • 할당:
  • set    
    
  • 수치 추출:
  • get  
    
    getset        -->     ,     
    
  • 삭제:
  • del  
    
  • 수치 증감:
  • incr      -->    +1,     
          ,      0  +1;
             ,    ;
    
    decr   -->  ,     ;
    
  • 확장 명령:
  • incrby     -->          ;
       incr  
    
    decrby     -->          ;
       decr  
    
    append      -->            ;
           ,         ;
            ,            ;
    

    1.2 문자열 목록 (list)
    삽입 순서에 따라 정렬 된 문자열 링크 는 데이터 구조 에 있 는 링크 와 같 습 니 다. 머리 와 꼬리 에 요 소 를 삽입 할 수 있 습 니 다. 링크 의 양쪽 끝 에 삽입 하고 삭제 하 는 것 은 매우 효율 적 입 니 다. 링크 의 중간 에 작용 하면 효율 적 이지 않 습 니 다. list 에 중복 요소 가 있 을 수 있 습 니 다.
    1.2.1 ArrayList 는 배열 방식 을 사용 하여 색인 에 따라 조회 속도 가 매우 빠 르 지만 추가 와 삭제 가 비교적 느리다.
    1.2.2 LinkedList 는 양 방향 링크 방식 을 사용 하고 모든 요소 가 앞 뒤 요소 의 지침 을 기록 하기 때문에 데 이 터 를 삽입 하고 삭제 하 는 것 은 앞 뒤 요소 의 지침 만 바 꾸 면 되 기 때문에 매우 효율 적 입 니 다.
    상용 명령
  • 양 끝 추가
  • //    
    lpush list   1  2  3 -->      list  list       list        1, 2, 3;          list       1, 2, 3;          :
     3  2  1
    //    
    rpush list   1  2  3 -->      list  list       list        1, 2, 3;          list       1, 2, 3;          :
     1  2  3
    
  • 목록 보기
  • lrange my list  start end -->    list  list    ,  start  ,  end  ;    start end     ,  -1 ,          ,  ,-2         .
    
  • 양 끝 팝 업
  • //    
    lpop list  -->        (  )       ,          ,          nil
    //    
    rpop list  -->        (  )       ,          ,          nil
    
  • 목록 요소 개수 가 져 오기
  • llen list  -->  list      .
    
  • 확장 명령
  • //  
    //  list           
    lpushx list 
    //  list           
    rpushx list 
    //         ,           value,           nil
    lset list     value
    //             
    insert list  before  1  2 -->   list     ,    1            2   .
    //             
    insert list  after  1  2 -->   list     ,    1            2   .
    
    //  
    //  list count   value   ,  count>0          ,count<0          ;count=0       value   .
    lrem list  count value
    
    //         
    rpoplpush list 1 list 2 --> list 1       ,   list 2   ;
    

    1.3 해시 (hash)
    해시 타 입 은 자바 의 맵 상용 명령 으로 볼 수 있 습 니 다.
  • 할당
  • hset map      -->   map  hash       ;
    
    hmset map   1  1  2  2 ... -->   map  hash      
    
  • 수치 추출
  • hget map    -->    map  hash  key    ;
    
    hmget map   1  2 ..  ->>    map  hash       ;
    
    hgetall map  -->    map  hash       ;
    
  • 삭제
  • hdel map    -->  map  hash  key    
    
    del map  -->    map  hash
    
  • 수치 증감
  • hincrby map      -->   map  hash key     + ;
    
  • 기타 판단 치 는 존재 합 니까?
  • hexists map    -->    map  hash key       ?    1;     0;
    

    키 값 이 몇 개 있 습 니까?
    hlen map  -->         ;
    

    모든 키 가 져 오기
    hkeys map  -->     key
    

    모든 값 획득
    hvalues map  -->     valu
    

    1.4 문자열 집합 (set)
    List 형식 과 달리 set 집합 에 중복 되 는 요소 상용 명령 이 나타 나 면 안 됩 니 다.
  • 요소 추가 / 삭제
  • sadd myset   1  2  3 -->   myset  set    1  2  3,            .
    srem myset   1  2 -->    myset  set  1  2   
    
  • 집합 중의 원소 획득
  • smembers myset  -->    myset  set     
    
  • 집합 중의 차 집합 연산 은 두 집합 에서 차이 가 나 는 요소
  • 를 되 돌려 준다.
    sdiff myset 1 myset 2 -->    set        ,  key     .
    
  • 집합 중의 교 집합 연산
  • sinter myset 1 myset 2 -->    set      
    
  • 집합 중의 집합 연산
  • sunion myset 1 myset 2 -->  
    
  • 확장 명령 은 특정한 값 이 특정한 set 에 있 는 지 판단 합 니 다
  • sismember myset   1 -->   1     myset  set 
    

    set 멤버 수 획득
    scard myset  -->  myset      
    

    set 의 요 소 를 무 작위 로 가 져 옵 니 다.
    srandember myset  -->  myset         
    

    두 set 의 차이 요 소 를 새로운 set 에 저장 합 니 다.
    sdiffstore newset set1 set2 --> set1 set2        newset .
    

    두 set 의 교차 요 소 를 새로운 set 에 저장 합 니 다.
    sinterstore newset set1 set2 --> set1 set2        newset .
    

    두 set 의 집합 요 소 를 새로운 set 에 저장 합 니 다.
    sunionstore newset set1 set2 --> set1 set2        newset .
    

    사용 장면: 유일한 방문 을 추적 합 니 다.
    1.5 질서 있 는 문자열 집합 (sorted set)
    set 와 의 차이 점 은 하나의 점수 가 모든 요소 와 대응 하 는 것 입 니 다. 즉, 요소 의 위 치 는 질서 가 있 습 니 다. 상용 명령 입 니 다.
  • 원소 첨가
  • zadd sort    1   1   2   2 -->   sort  sorted set     1    2;        1    2;    sorted set        ,              .
    
  • 원 소 를 획득
  • zscore mysort    1 -->    mysort    1    
    zcard mysort  -->  mysort  set     
    
  • 원소 삭제
  • zrem mysort    1   2 -->  set    1   2
    zremrangebyrank mysort  0 4 -->      ,      ,    
    zremrangebyscore mysort  80 100 -->  80  100       
    
  • 범위 조회
  • zrange mysort  0 -1 -->    mysort  set   ,         
    zrange mysort  0 -1 withscores -->    mysort  set   ,         ,            .    ,    .              .
    zrevrange mysort  0 -1 withscores -->       
    
  • 확장 명령 은 점수 가 어느 사이 에 있 는 요 소 를 되 돌려 주 고 점수 에 따라 낮은 것 에서 높 은 것 으로 정렬 합 니 다
  • zrangebyscore mysort  0 100 withscores limit 0 2 -->           0 100        .
    

    어떤 원소 에 점 수 를 증가 시 킵 니 다.
    zincrby mysort      1 --> mysort  set    1        ; 
    

    어떤 점수 구간 의 원소 개 수 를 가 져 옵 니 다.
    zcount mysort  1  2 -->      1  2       ;
    

    사용 필드: 대형 게임 의 포인트 랭 킹
    2. Key 정의 의 주의 점
  • 1. 너무 길 지 말고 1024 바이트 를 넘 지 않 는 것 이 좋 습 니 다.
  • 2. 너무 짧 지 않 고 가 독성 에 영향 을 주지 마 세 요.
  • 좋은 웹페이지 즐겨찾기