> ## Documentation Index
> Fetch the complete documentation index at: https://upstash-vector.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Serverless API with Java and Redis

> In this tutorial, we will build a stateful serverless API using Java and Redis on AWS Lambda. The API will simply count the page views and return it as http response.

In this tutorial, we will build a stateful serverless API using Java and Redis
on AWS Lambda. The API will simply count the page views and return it as http
response.

### Prerequisites

* Install node and npm
* Install the Serverless Framework installed with an AWS account set up.
* Install JDK and not Java JRE. Set your JAVA\_HOME.
* Install Apache Maven.
* Create a free Serverless Redis database from
  [Upstash](https://console.upstash.com) as described
  [here](https://docs.upstash.com/).

### Project Setup

* Create the project:

serverless create --template aws-java-maven --name serverless-api-java-redis -p
serverless-api-java-redis

* Add jedis as dependency to the pom.xml:

  ```xml
  <dependency>
     <groupId>redis.clients</groupId>
     <artifactId>jedis</artifactId>
     <version>3.6.0</version>
  </dependency>
  ```

* Update serverless.yml adding an http endpoint as below:

```
functions:
 hello:
   handler: com.serverless.Handler
   events:
     - httpApi:
         path: /hello
         method: get
```

### The Code

Update Handler.java as below:

```java
package com.serverless;

import java.util.Map;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import redis.clients.jedis.Jedis;

public class Handler implements RequestHandler<Map<String, Object>, ApiGatewayResponse> {
  @Override
  public ApiGatewayResponse handleRequest(Map<String, Object> input, Context context) {
     Jedis jedis = new Jedis("us1-lasting-lion-32618.upstash.io", 32618, true);
     jedis.auth("d5033b46dfbgheb6718f9dbbd2925");
     Long value = jedis.incr("counter");
     String message = "Hello World, Count:" + value;
     return ApiGatewayResponse.builder()
           .setStatusCode(200)
           .setObjectBody(message)
           .build();
  }
}
```

In the above code, you need to replace your Redis endpoint and password. You can
copy Jedis connection code from the
[Upstash console](https://console.upstash.com).

### Deploy and Run

First build your project with `mvn clean install`. Then deploy to AWS with
`serverless deploy`. The last command will output the endpoint URL as below:

```shell
Serverless: Stack update finished...

Service Information

service: serverless-api-java-redis

stage: dev

region: us-east-1

stack: serverless-api-java-redis-dev

resources: 11

api keys:

  None

endpoints:

  GET - https://60tinzba0a.execute-api.us-east-1.amazonaws.com/hello

functions:

  hello: serverless-api-java-redis-dev-hello

layers:

  None
```
