2017-03-04 4 views
0

반응 감소 형 응용 프로그램 용 LRU를 구현하고 싶었지만 감속기를 통해 저장소에 데이터를 읽고 쓰는 최상의 전략이 무엇인지 잘 모르겠습니다. LRU 구조.LRU 및 절약 저장소 전략 사용

목표는 최신 사용자 목록에 대한 LRU를 구현하는 것입니다. 효과적으로 응용 프로그램이 특정 연락처를 클릭 할 때마다 가장 최근 사용자 목록에 추가됩니다. 목록이 최대 10 명의 사용자를 대상으로한다고 가정 해 보겠습니다. 그러면 목록에서 가장 오래된 액세스 사용자가 최대치에 도달 할 때 효과적으로 효과가 나타납니다.

목록의 각 사용자에 대해 타임 스탬프를 연결할 수는 있지만 저장소에서 상태를 읽을 때마다 정렬 및 느린 가장 오래된 시간 스탬프를 찾아야합니다.

나는 React/Redux를 처음 사용하므로 나와 함께하시기 바랍니다.

의견을 보내 주시면 감사하겠습니다.

덕분에, 데릭

답변

1

가 난 그냥 "연락처를 선택"조치에 역할을하는 별도의 감속기있을 것입니다 (아마도 현재 선택한 사용자 설정에 역할을 할 또 다른 감속기가있다). 배열을 유지하고 앞으로 밀면됩니다. 최대가 reachers라면, 끝에서 튕겨 나옵니다. 같은

뭔가 :

const initialState = [] 

export const lruReducer = (state = initialState, action) => { 
    switch(action.type) { 
     case 'SELECT_CONTACT': 
      // copy the previous array (I'm assuming ES6 syntax here, but you could use Object.assign or ImmutableJS or something if preferred) 
      // this is important to keep the state immutable 
      let newState = [...state] 

      // add the new contact (this is where you would do any de-duping logic 
      newState.unshift(action.user) 

      // keep removing items until constraint is met 
      while (newState.length > 10) { 
       newState.pop() 
      } 

      // return new array 
      return newState 
     default: 
      return state 
    } 
} 

가 그럼 그냥 정상처럼 다른 감속기와이 결합되어 있습니다.

+0

감사합니다. 그래, 내가 그 일을 끝내 었습니다. – darewreck