Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions content/develop/use-cases/cache-aside/java-lettuce/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,31 @@ If your Redis server is running elsewhere, start the demo with `--redis-host` an

## Running the demo

### Get Lettuce and its dependencies

Lettuce needs Netty, Reactor and a few other jars at runtime, and `javac` and `java` need them on the classpath. The simplest way to collect them is with Maven. In the demo directory, create a minimal `pom.xml`, then copy its dependencies into a local `lib/` directory:

```bash
cat > pom.xml <<'EOF'
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>7.9.0.RELEASE</version>
</dependency>
</dependencies>
</project>
EOF
mvn -q dependency:copy-dependencies -DoutputDirectory=lib
```

### Start the demo server

A local demo server is included to show the cache-aside layer in action
([source](DemoServer.java)):

Expand Down
29 changes: 26 additions & 3 deletions content/develop/use-cases/job-queue/java-lettuce/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -296,14 +296,14 @@ Add Lettuce to your project:
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.7.1.RELEASE</version>
<version>7.9.0.RELEASE</version>
</dependency>
```

* If you use **Gradle**:

```groovy
implementation 'io.lettuce:lettuce-core:6.7.1.RELEASE'
implementation 'io.lettuce:lettuce-core:7.9.0.RELEASE'
```

## Running the demo
Expand All @@ -321,9 +321,32 @@ curl -O $BASE/WorkerPool.java
curl -O $BASE/DemoServer.java
```

### Get Lettuce and its dependencies

Lettuce needs Netty, Reactor and a few other jars at runtime, and `javac` and `java` need them on the classpath. The simplest way to collect them is with Maven. In the demo directory, create a minimal `pom.xml`, then copy its dependencies into a local `lib/` directory:

```bash
cat > pom.xml <<'EOF'
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>7.9.0.RELEASE</version>
</dependency>
</dependencies>
</project>
EOF
mvn -q dependency:copy-dependencies -DoutputDirectory=lib
```

### Start the demo server

From that directory, compile the sources and run the server. With the Lettuce + netty + reactor jars staged in a local `lib/` directory:
From that directory, compile the sources and run the server:

```bash
javac -cp "lib/*" -d build RedisJobQueue.java JobWorker.java WorkerPool.java DemoServer.java
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
* Redis leaderboard demo server using the async Lettuce implementation.
*
* Usage:
* javac -cp lettuce-core-6.7.1.RELEASE.jar AsyncRedisLeaderboard.java ReactiveRedisLeaderboard.java DemoServer.java
* java -cp .:lettuce-core-6.7.1.RELEASE.jar DemoServer [--port PORT] [--redis-host HOST] [--redis-port PORT]
* javac -cp 'lib/*' AsyncRedisLeaderboard.java ReactiveRedisLeaderboard.java DemoServer.java
* java -cp '.:lib/*' DemoServer [--port PORT] [--redis-host HOST] [--redis-port PORT]
*/
public class DemoServer {

Expand Down
31 changes: 27 additions & 4 deletions content/develop/use-cases/leaderboard/java-lettuce/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ Add the Lettuce dependency to your project:
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.7.1.RELEASE</version>
<version>7.9.0.RELEASE</version>
</dependency>
```

* If you use **Gradle**:

```groovy
implementation 'io.lettuce:lettuce-core:6.7.1.RELEASE'
implementation 'io.lettuce:lettuce-core:7.9.0.RELEASE'
```

### Lettuce vs Jedis
Expand Down Expand Up @@ -253,16 +253,39 @@ curl -O $BASE/ReactiveRedisLeaderboard.java
curl -O $BASE/DemoServer.java
```

### Get Lettuce and its dependencies

Lettuce needs Netty, Reactor and a few other jars at runtime, and `javac` and `java` need them on the classpath. The simplest way to collect them is with Maven. In the demo directory, create a minimal `pom.xml`, then copy its dependencies into a local `lib/` directory:

```bash
cat > pom.xml <<'EOF'
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>7.9.0.RELEASE</version>
</dependency>
</dependencies>
</project>
EOF
mvn -q dependency:copy-dependencies -DoutputDirectory=lib
```

### Start the demo server

A local demo server ([source](https://github.com/redis/docs/blob/main/content/develop/use-cases/leaderboard/java-lettuce/DemoServer.java)) is included to show the leaderboard in action:

```bash
# Compile
javac -cp lettuce-core-6.7.1.RELEASE.jar AsyncRedisLeaderboard.java ReactiveRedisLeaderboard.java DemoServer.java
javac -cp 'lib/*' AsyncRedisLeaderboard.java ReactiveRedisLeaderboard.java DemoServer.java

# Run the demo server
java -cp .:lettuce-core-6.7.1.RELEASE.jar DemoServer
java -cp '.:lib/*' DemoServer
```

The demo uses the async implementation for the HTTP handlers and provides an interactive web interface where you can:
Expand Down
29 changes: 17 additions & 12 deletions content/develop/use-cases/prefetch-cache/java-lettuce/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -292,20 +292,25 @@ curl -O $BASE/SyncWorker.java
curl -O $BASE/DemoServer.java
```

You also need Lettuce and its runtime dependencies on your classpath. The simplest way is to download them into a local `lib/` directory:
Lettuce needs Netty, Reactor and a few other jars at runtime, and `javac` and `java` need them on the classpath. The simplest way to collect them is with Maven. In the demo directory, create a minimal `pom.xml`, then copy its dependencies into a local `lib/` directory:

```bash
mkdir lib && cd lib
LETTUCE=https://repo1.maven.org/maven2/io/lettuce/lettuce-core/6.5.0.RELEASE
curl -O $LETTUCE/lettuce-core-6.5.0.RELEASE.jar
NETTY=https://repo1.maven.org/maven2/io/netty
for ARTIFACT in netty-buffer netty-codec netty-common netty-handler \
netty-resolver netty-transport netty-transport-native-unix-common; do
curl -O "$NETTY/$ARTIFACT/4.1.113.Final/$ARTIFACT-4.1.113.Final.jar"
done
curl -O https://repo1.maven.org/maven2/io/projectreactor/reactor-core/3.6.6/reactor-core-3.6.6.jar
curl -O https://repo1.maven.org/maven2/org/reactivestreams/reactive-streams/1.0.4/reactive-streams-1.0.4.jar
cd ..
cat > pom.xml <<'EOF'
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>7.9.0.RELEASE</version>
</dependency>
</dependencies>
</project>
EOF
mvn -q dependency:copy-dependencies -DoutputDirectory=lib
```

### Start the demo server
Expand Down
25 changes: 19 additions & 6 deletions content/develop/use-cases/pub-sub/java-lettuce/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -254,13 +254,26 @@ curl -O $BASE/RedisPubSubHub.java
curl -O $BASE/DemoServer.java
```

You also need a `lib/` directory containing the Lettuce client and its runtime dependencies — at minimum:
Lettuce needs Netty, Reactor and a few other jars at runtime, and `javac` and `java` need them on the classpath. The simplest way to collect them is with Maven. In the demo directory, create a minimal `pom.xml`, then copy its dependencies into a local `lib/` directory:

* `lettuce-core-6.x.jar`
* `netty-buffer-4.1.x.jar`, `netty-codec-4.1.x.jar`, `netty-common-4.1.x.jar`, `netty-handler-4.1.x.jar`, `netty-resolver-4.1.x.jar`, `netty-transport-4.1.x.jar`, `netty-transport-native-unix-common-4.1.x.jar`
* `reactor-core-3.x.jar`, `reactive-streams-1.0.x.jar`

The simplest way to collect them is with Maven. Create a minimal `pom.xml` declaring `io.lettuce:lettuce-core` as the only dependency, then run `mvn dependency:copy-dependencies -DoutputDirectory=lib`.
```bash
cat > pom.xml <<'EOF'
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>7.9.0.RELEASE</version>
</dependency>
</dependencies>
</project>
EOF
mvn -q dependency:copy-dependencies -DoutputDirectory=lib
```

### Start the demo server

Expand Down
31 changes: 27 additions & 4 deletions content/develop/use-cases/rate-limiter/java-lettuce/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,14 +125,14 @@ Add the Lettuce dependency to your project:
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.7.1.RELEASE</version>
<version>7.9.0.RELEASE</version>
</dependency>
```

* If you use **Gradle**:

```groovy
implementation 'io.lettuce:lettuce-core:6.7.1.RELEASE'
implementation 'io.lettuce:lettuce-core:7.9.0.RELEASE'
```

### Lettuce vs Jedis
Expand Down Expand Up @@ -308,17 +308,40 @@ curl -O $BASE/ReactiveTokenBucket.java
curl -O $BASE/DemoServer.java
```

### Get Lettuce and its dependencies

Lettuce needs Netty, Reactor and a few other jars at runtime, and `javac` and `java` need them on the classpath. The simplest way to collect them is with Maven. In the demo directory, create a minimal `pom.xml`, then copy its dependencies into a local `lib/` directory:

```bash
cat > pom.xml <<'EOF'
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>7.9.0.RELEASE</version>
</dependency>
</dependencies>
</project>
EOF
mvn -q dependency:copy-dependencies -DoutputDirectory=lib
```

### Start the demo server

A demonstration HTTP server is included to show the rate limiter in action
([source](https://github.com/redis/docs/blob/main/content/develop/use-cases/rate-limiter/java-lettuce/DemoServer.java)):

```bash
# Compile
javac -cp lettuce-core-6.7.1.RELEASE.jar TokenBucket.java DemoServer.java
javac -cp 'lib/*' TokenBucket.java DemoServer.java

# Run the demo server
java -cp .:lettuce-core-6.7.1.RELEASE.jar DemoServer
java -cp '.:lib/*' DemoServer
```

The demo provides an interactive web interface where you can:
Expand Down
31 changes: 27 additions & 4 deletions content/develop/use-cases/session-store/java-lettuce/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,14 +187,14 @@ Add Lettuce to your project:
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.7.1.RELEASE</version>
<version>7.9.0.RELEASE</version>
</dependency>
```

* If you use **Gradle**:

```groovy
implementation 'io.lettuce:lettuce-core:6.7.1.RELEASE'
implementation 'io.lettuce:lettuce-core:7.9.0.RELEASE'
```

## Running the demo
Expand All @@ -211,14 +211,37 @@ curl -O $BASE/ReactiveSessionStore.java
curl -O $BASE/DemoServer.java
```

### Get Lettuce and its dependencies

Lettuce needs Netty, Reactor and a few other jars at runtime, and `javac` and `java` need them on the classpath. The simplest way to collect them is with Maven. In the demo directory, create a minimal `pom.xml`, then copy its dependencies into a local `lib/` directory:

```bash
cat > pom.xml <<'EOF'
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>7.9.0.RELEASE</version>
</dependency>
</dependencies>
</project>
EOF
mvn -q dependency:copy-dependencies -DoutputDirectory=lib
```

### Start the demo server

A local demo server is included to show the session store in action
([source](https://github.com/redis/docs/blob/main/content/develop/use-cases/session-store/java-lettuce/DemoServer.java)):

```bash
javac -cp lettuce-core-6.7.1.RELEASE.jar AsyncSessionStore.java DemoServer.java
java -cp .:lettuce-core-6.7.1.RELEASE.jar DemoServer
javac -cp 'lib/*' AsyncSessionStore.java DemoServer.java
java -cp '.:lib/*' DemoServer
```

The demo uses the async Lettuce API and exposes a small interactive page where you can:
Expand Down
29 changes: 17 additions & 12 deletions content/develop/use-cases/streaming/java-lettuce/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -338,20 +338,25 @@ curl -O $BASE/ConsumerWorker.java
curl -O $BASE/DemoServer.java
```

You also need Lettuce and its runtime dependencies on your classpath. The simplest way is to download them into a local `lib/` directory:
Lettuce needs Netty, Reactor and a few other jars at runtime, and `javac` and `java` need them on the classpath. The simplest way to collect them is with Maven. In the demo directory, create a minimal `pom.xml`, then copy its dependencies into a local `lib/` directory:

```bash
mkdir lib && cd lib
LETTUCE=https://repo1.maven.org/maven2/io/lettuce/lettuce-core/6.5.0.RELEASE
curl -O $LETTUCE/lettuce-core-6.5.0.RELEASE.jar
NETTY=https://repo1.maven.org/maven2/io/netty
for ARTIFACT in netty-buffer netty-codec netty-common netty-handler \
netty-resolver netty-transport netty-transport-native-unix-common; do
curl -O "$NETTY/$ARTIFACT/4.1.113.Final/$ARTIFACT-4.1.113.Final.jar"
done
curl -O https://repo1.maven.org/maven2/io/projectreactor/reactor-core/3.6.6/reactor-core-3.6.6.jar
curl -O https://repo1.maven.org/maven2/org/reactivestreams/reactive-streams/1.0.4/reactive-streams-1.0.4.jar
cd ..
cat > pom.xml <<'EOF'
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>7.9.0.RELEASE</version>
</dependency>
</dependencies>
</project>
EOF
mvn -q dependency:copy-dependencies -DoutputDirectory=lib
```

### Start the demo server
Expand Down
Loading
Loading