{Key, Value} 데이터를 ETS ordered_set에 보관하십시오. 여기서 Key은 datetime입니다. 주어진 시간 내내 모든 항목을 선택하는 것은 꽤 쉽습니다 [From, To] 내부. 그런 뭔가 : 그래서 우리는 항목의 수를 제한 할 수 있습니다 Limit 매개 변수 기능 select()에서 우리가 선택해야 ets:select(Tab, [{
나는 erlang 서버를 구축 중입니다. 사용자가 HTTP 요청을 서버로 보내 상태를 업데이트합니다. 서버의 http 요청 프로세스는 사용자 상태 메시지를 메모리에 저장합니다. 1 분마다 서버는 모든 메시지를 원격 서버로 보내고 메모리를 지 웁니다. 사용자가 1 분 내에 여러 번 상태를 업데이트하면 마지막 메시지가 이전 메시지보다 우선합니다. 모든 메시지를
서버 구성 요소가 완전히 erlang으로 작성된 기존 (게임) 프로젝트에 들어갈 예정입니다. 때로는이 시스템에서 데이터 조각을 얻는 것이 너무나 어려울 수 있습니다 (플레이어 56가 얼마나 많은 위젯을 소유하고 있는지 관심이 있습니다). 데이터를 소유 한 프로세스를 찾을 수 있다고 가정하면 해당 프로세스에 메시지를 전달하고 메시지를 다시 전달할 때까지 기다
ETS 세트는 튜플의 내부 순서가 삽입 된 순서와 동일 함을 보장합니까? 예를 들어, 매초마다 튜플을 삽입하여 로그를 유지하고 타임 스탬프가 키입니다. 이 예제에서는 터플이 키에 의해 정렬되도록 보장합니까? 나는 ordered_set이 원하는대로 할 수 있다고 생각하지만 삽입 오버 헤드가 있습니다. 따라서 set이 삽입 순서를 유지한다면, set을 사용하는
짧은 버전 : ets:foldl을 사용하여 모든 ETS 레코드를 삭제하는 것이 안전합니까? ETS 테이블에 정보가 누적되어 이제는 모두 처리해야한다고 가정합니다. 레코드가 테이블에서 읽히고 어떤 식 으로든 사용 된 다음 삭제됩니다. (또한 표가 private이므로 동시성 문제는 발생하지 않습니다.) 유사한 언어로 된 다른 데이터 구조에서는 for ... e
조회 시간은 ETS 테이블에 대해 일정하다는 것을 알고 있습니다. 그러나 테이블이 프로세스 외부에 보관되어 있고 데이터를 검색 할 때 프로세스 힙으로 이동해야한다고 들었습니다. 따라서 이것은 비쌉니다. 그러나 다음을 설명하는 방법 : 18> {Time, [[{ok, Binary}]]} = timer:tc(ets, match, [utilo, {a, '$1'}
나는 ets 사용법을 배웠지 만, 나를 귀찮게하는 한가지는 ets:match이 bad argument ...을 던졌습니다. 그리고 그 이후부터 모든 후속 호출 (이전에 작동 한 호출도)은 bad argument :
> ets:match(Tid, { [$r | '$1'] }, 1).
% this match works...
% Then, at some