# Getting Started

{% hint style="warning" %}
**This is the manual for older MicroStream versions (Version < 5.0).**

**The new documentation (Version >= 5.0) is located at:**

[https://docs.microstream.one/](https://docs.microstream.one/manual)
{% endhint %}

## Prerequisites

{% code title="pom.xml" %}

```markup
<repositories>
    <repository>
        <id>microstream-releases</id>
        <url>https://repo.microstream.one/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>one.microstream</groupId>
        <artifactId>cache</artifactId>
        <version>03.00.00-MS-GA</version>
    </dependency>
</dependencies>
```

{% endcode %}

## Hello World

```java
CachingProvider provider     = Caching.getCachingProvider();  
CacheManager    cacheManager = provider.getCacheManager();   
MutableConfiguration<Integer, String> configuration = new MutableConfiguration<>()  
    .setTypes(Integer.class, String.class)   
    .setStoreByValue(false)   
    .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_MINUTE));  
Cache<Integer, String> cache = cacheManager.createCache("jCache", configuration); 
cache.put(1, "Hello World"); 
String value = cache.get(1); 
```

1\)  Get the default `CachingProvider` implementation from the application’s classpath. This method will work if and only if there is only one JCache implementation available in the classpath. If there are multiple providers then use the fully qualified name\
`Caching.getCachingProvider("one.microstream.cache.CachingProvider")` \
instead.

2\)  Get the default `CacheManager` instance using the provider.

3\)  Create a cache configuration using `MutableConfiguration`\
&#x20;   4\) with key type and value type as `Integer` and `String` respectively\
&#x20;   5\) configured to store the cache entries by reference (not by value)\
&#x20;   6\) and with an expiry time of one minute defined for entries from the moment they are created.

7\)  Using the cache manager, create a cache named `jCache` with the configuration created in step 3.

8\) Put some data into the cache

9\) And retrieve it.

The same can be done using MicroSteam's `CacheConfiguration` API. This time we use a `EmbeddedStorageManager` as a backing store for the cache.

```java
EmbeddedStorageManager storageManager = EmbeddedStorage.start();
CachingProvider provider     = (one.microstream.cache.CachingProvider)Caching.getCachingProvider();  
CacheManager    cacheManager = provider.getCacheManager();   
CacheConfiguration<Integer, String> configuration = CacheConfiguration
			.Builder(Integer.class, String.class, "jCache", storageManager)
			.expiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_HOUR))
			.build();  
Cache<Integer, String> cache = cacheManager.createCache("jCache", configuration); 
cache.put(1, "one"); 
String value = cache.get(1); 
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://manual.docs.microstream.one/3.0/cache/getting-started.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
