<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=AsyncStorage</id>
	<title>AsyncStorage - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=AsyncStorage"/>
	<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=AsyncStorage&amp;action=history"/>
	<updated>2026-07-06T04:20:56Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.gaonwiki.com/w/index.php?title=AsyncStorage&amp;diff=107665&amp;oldid=prev</id>
		<title>Gaon12: 시작</title>
		<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=AsyncStorage&amp;diff=107665&amp;oldid=prev"/>
		<updated>2024-10-23T02:15:10Z</updated>

		<summary type="html">&lt;p&gt;시작&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 개요 ==&lt;br /&gt;
AsyncStorage는 React Native에서 비동기적으로 데이터를 저장하고 검색할 수 있는 간단한 키-값 저장소이다. 모바일 애플리케이션에서 로컬 데이터를 관리하는 데 유용하며, 비동기 API를 통해 데이터의 저장과 검색을 처리한다.&lt;br /&gt;
&lt;br /&gt;
== 역사와 배경 ==&lt;br /&gt;
AsyncStorage는 React Native의 초기 버전부터 제공되어 왔다. 웹의 LocalStorage와 유사한 기능을 모바일 환경에서 제공하기 위해 설계되었으며, React Native 애플리케이션에서 간단한 데이터 저장소로 널리 사용된다.&lt;br /&gt;
&lt;br /&gt;
== 특징 ==&lt;br /&gt;
=== 비동기 처리 ===&lt;br /&gt;
AsyncStorage는 모든 작업이 비동기적으로 이루어진다. 이는 데이터 저장 및 검색 시 애플리케이션의 UI 스레드가 차단되지 않도록 하여 성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
=== 키-값 저장소 ===&lt;br /&gt;
데이터는 문자열 형태의 키와 값으로 저장된다. 이는 간단한 데이터 구조를 저장하는 데 적합하다.&lt;br /&gt;
&lt;br /&gt;
=== 제한된 용량 ===&lt;br /&gt;
AsyncStorage는 플랫폼에 따라 저장 용량이 제한될 수 있다. Android에서는 약 6MB, iOS에서는 약 4MB의 데이터 용량 제한이 있으므로 대량의 데이터를 저장하는 데는 적합하지 않다. 필요 시 SQLite 또는 다른 대체 솔루션을 고려해야 한다.&lt;br /&gt;
&lt;br /&gt;
== 설치 및 호환성 ==&lt;br /&gt;
AsyncStorage는 다양한 플랫폼에서 사용할 수 있으며, 설치 방법은 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
=== 설치 방법 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;npm 사용 시&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
npm install @react-native-async-storage/async-storage&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Yarn 사용 시&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
yarn add @react-native-async-storage/async-storage&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Expo CLI 사용 시&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
npx expo install @react-native-async-storage/async-storage&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 플랫폼 호환성 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Android&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;iOS&amp;#039;&amp;#039;&amp;#039;: React Native 0.60+ 필요. CLI 자동 링크 기능이 모듈을 앱 빌드 시 연결.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Windows&amp;#039;&amp;#039;&amp;#039;: React Native Windows 0.63+ 필요.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;macOS&amp;#039;&amp;#039;&amp;#039;: React Native macOS 0.63+ 필요. &amp;lt;code&amp;gt;macos/Podfile&amp;lt;/code&amp;gt;에 &amp;lt;code&amp;gt;platform :macos, &amp;#039;10.14&amp;#039;&amp;lt;/code&amp;gt; 설정 후 pods 설치.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Web&amp;#039;&amp;#039;&amp;#039;: AsyncStorage는 웹을 직접 지원하지 않음. 대신 [[LocalStorage]], [[SessionStorage]], 또는 [[IndexedDB]]를 사용해야 한다.&lt;br /&gt;
&lt;br /&gt;
== AsyncStorage의 사용법 ==&lt;br /&gt;
=== 데이터 저장 ===&lt;br /&gt;
데이터를 저장하려면 &amp;lt;code&amp;gt;setItem&amp;lt;/code&amp;gt; 메서드를 사용한다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
import AsyncStorage from &amp;#039;@react-native-async-storage/async-storage&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
const storeData = async (key, value) =&amp;gt; {&lt;br /&gt;
  try {&lt;br /&gt;
    await AsyncStorage.setItem(key, value);&lt;br /&gt;
  } catch (error) {&lt;br /&gt;
    console.error(&amp;#039;Error storing data&amp;#039;, error);&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 데이터 검색 ===&lt;br /&gt;
저장된 데이터를 검색하려면 &amp;lt;code&amp;gt;getItem&amp;lt;/code&amp;gt; 메서드를 사용한다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
const getData = async (key) =&amp;gt; {&lt;br /&gt;
  try {&lt;br /&gt;
    const value = await AsyncStorage.getItem(key);&lt;br /&gt;
    if (value !== null) {&lt;br /&gt;
      return value;&lt;br /&gt;
    }&lt;br /&gt;
  } catch (error) {&lt;br /&gt;
    console.error(&amp;#039;Error retrieving data&amp;#039;, error);&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 데이터 삭제 ===&lt;br /&gt;
데이터를 삭제하려면 &amp;lt;code&amp;gt;removeItem&amp;lt;/code&amp;gt; 메서드를 사용한다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
const removeData = async (key) =&amp;gt; {&lt;br /&gt;
  try {&lt;br /&gt;
    await AsyncStorage.removeItem(key);&lt;br /&gt;
  } catch (error) {&lt;br /&gt;
    console.error(&amp;#039;Error removing data&amp;#039;, error);&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 다중 데이터 처리 ===&lt;br /&gt;
AsyncStorage는 여러 데이터를 한 번에 처리할 수 있는 메서드를 제공한다:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;multiSet&amp;#039;&amp;#039;&amp;#039;: 여러 키-값 쌍을 한 번에 저장.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;multiGet&amp;#039;&amp;#039;&amp;#039;: 여러 키에 해당하는 값을 한 번에 검색.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;multiRemove&amp;#039;&amp;#039;&amp;#039;: 여러 키에 해당하는 데이터를 한 번에 삭제.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;multiMerge&amp;#039;&amp;#039;&amp;#039;: 여러 키의 데이터를 병합하여 저장.&lt;br /&gt;
&lt;br /&gt;
다중 데이터 처리 예시:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
const saveMultiple = async () =&amp;gt; {&lt;br /&gt;
  try {&lt;br /&gt;
    await AsyncStorage.multiSet([[&amp;#039;key1&amp;#039;, &amp;#039;value1&amp;#039;], [&amp;#039;key2&amp;#039;, &amp;#039;value2&amp;#039;]]);&lt;br /&gt;
  } catch (error) {&lt;br /&gt;
    console.error(&amp;#039;Error saving multiple items&amp;#039;, error);&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 고급 설정 및 성능 최적화 ==&lt;br /&gt;
AsyncStorage의 성능을 최적화하거나 데이터 저장 용량을 늘리기 위해서는 다음과 같은 고급 설정을 사용할 수 있다:&lt;br /&gt;
&lt;br /&gt;
=== 데이터베이스 크기 조절 ===&lt;br /&gt;
기본적으로 AsyncStorage는 6MB의 용량을 제공하지만, 다음과 같이 크기를 조절할 수 있다. &amp;lt;code&amp;gt;android/gradle.properties&amp;lt;/code&amp;gt; 파일에 다음 설정을 추가하면 최대 10MB까지 늘릴 수 있다:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
AsyncStorage_db_size_in_MB=10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 비동기 작업 최적화 ===&lt;br /&gt;
비동기 작업이 반복적으로 발생하는 경우, AsyncStorage의 작업 순서를 관리하여 성능을 최적화할 수 있다. 이는 데이터 저장과 검색이 빈번하게 발생하는 경우에 유용하다.&lt;br /&gt;
&lt;br /&gt;
== 장단점 ==&lt;br /&gt;
=== 장점 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;비동기 처리&amp;#039;&amp;#039;&amp;#039;: UI 스레드 차단 없이 데이터 작업 가능.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;간편한 API&amp;#039;&amp;#039;&amp;#039;: 키-값 쌍으로 손쉽게 데이터 관리 가능.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;플랫폼 독립성&amp;#039;&amp;#039;&amp;#039;: iOS와 Android 모두에서 동일하게 작동.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Expo 사용 가능&amp;#039;&amp;#039;&amp;#039;: expo에서도 별도의 설정 없이 바로 사용 가능.&lt;br /&gt;
&lt;br /&gt;
=== 단점 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;제한된 용량&amp;#039;&amp;#039;&amp;#039;: 대량의 데이터 저장에 부적합. Android와 iOS에서 각각 약 6MB와 4MB 정도로 제한됨.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;보안 문제&amp;#039;&amp;#039;&amp;#039;: 민감한 데이터를 저장하기에는 보안이 취약할 수 있음. 데이터는 평문으로 저장되므로 [[SecureStore]] 같은 대체 라이브러리 사용을 권장.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;동시성 문제&amp;#039;&amp;#039;&amp;#039;: 다중 스레드 환경에서의 동시 접근 시 충돌 가능성 있음.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[SecureStore]]: 키를 암호화 해서 OS 암호화 영역에 저장한다. Expo 라이브러리.&lt;br /&gt;
* [[MMKV]]: AsyncStorage보다 30배 더 빠른 키-값 저장 라이브러리.&lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* {{깃허브/저장소|react-native-async-storage|async-storage}}&lt;br /&gt;
* [https://react-native-async-storage.github.io/async-storage React Native 문서]&lt;br /&gt;
* [https://reactnative.dev React Native 공식 문서]&lt;br /&gt;
* [https://docs.expo.dev/versions/latest/sdk/async-storage Expo AsyncStorage 문서]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--분류--&amp;gt;&lt;br /&gt;
[[분류:React Native]] [[분류:자바스크립트]] [[분류:Node.js]] [[분류:라이브러리]] [[분류:모바일 프로그래밍]] [[분류:데이터 저장소]]&lt;/div&gt;</summary>
		<author><name>Gaon12</name></author>
	</entry>
</feed>