Skip to content

Commit 174a4c5

Browse files
Merge pull request #2683 from madeline-underwood/redis
Redis_JA to review
2 parents fc6ec2d + 1d3e070 commit 174a4c5

File tree

6 files changed

+122
-112
lines changed

6 files changed

+122
-112
lines changed

content/learning-paths/servers-and-cloud-computing/redis-data-searching/_index.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
---
2-
title: Deploy Redis for data searching on Google Cloud C4A (Arm-based Axion VMs)
3-
4-
draft: true
5-
cascade:
6-
draft: true
2+
title: Deploy Redis for data searching on Google Cloud C4A
73

84
minutes_to_complete: 30
95

10-
who_is_this_for: This learning path is intended for software developers deploying and optimizing Redis-based data searching workloads on Linux/Arm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors.
6+
who_is_this_for: This is an introductory topic for developers deploying and optimizing Redis-based data searching workloads on Linux/Arm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors.
117

128
learning_objectives:
139
- Provision an Arm-based SUSE SLES virtual machine on Google Cloud (C4A with Axion processors)
1410
- Install Redis on a SUSE Arm64 (C4A) instance
1511
- Verify Redis functionality by running the server and performing baseline data insertion and retrieval tests on the Arm64 VM
16-
- Measure Redis SET (write) and GET (read) performance using the official redis-benchmark tool to evaluate throughput and latency on Arm64 (Aarch64)
12+
- Measure Redis SET (write) and GET (read) performance using the official redis-benchmark tool to evaluate throughput and latency on Arm64 (AArch64)
1713

1814
prerequisites:
1915
- A [Google Cloud Platform (GCP)](https://cloud.google.com/free) account with billing enabled
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
---
2-
title: Getting started with Redis on Google Axion C4A (Arm Neoverse-V2)
2+
title: Get started with Redis on Google Axion C4A
33

44
weight: 2
55

66
layout: "learningpathall"
77
---
88

9-
## Google Axion C4A Arm instances in Google Cloud
9+
## Explore Google Axion C4A Arm instances
1010

11-
Google Axion C4A is a family of Arm-based virtual machines built on Googles custom Axion CPU, which is based on Arm Neoverse-V2 cores. Designed for high-performance and energy-efficient computing, these virtual machines offer strong performance for modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications.
11+
Google Axion C4A is a family of Arm-based virtual machines built on Google's custom Axion CPU, based on Arm Neoverse-V2 cores. These virtual machines deliver strong performance for modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications.
1212

13-
The C4A series provides a cost-effective alternative to x86 virtual machines while leveraging the scalability and performance benefits of the Arm architecture in Google Cloud.
13+
The C4A series provides a cost-effective alternative to x86 virtual machines while leveraging the scalability and performance benefits of Arm architecture in Google Cloud.
1414

15-
To learn more about Google Axion, refer to the [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu) blog.
15+
Learn more about Google Axion from the Google blog [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu).
1616

17-
## Redis
17+
## Explore Redis
1818

19-
[Redis](https://redis.io/) is an open-source, **in-memory data structure store** developed under the [Redis project](https://redis.io/). It is used as a **database**, **cache**, and **message broker**, supporting a variety of data structures such as **strings**, **hashes**, **lists**, **sets**, and **sorted sets**.
19+
[Redis](https://redis.io/) is an open-source, in-memory data structure store developed under the [Redis project](https://redis.io/). It is used as a database, cache, and message broker, supporting a variety of data structures such as strings, hashes, lists, sets, and sorted sets.
2020

21-
Redis is designed for **high performance**, **low latency**, and **high throughput**, making it ideal for real-time applications. It supports **persistence**, **replication**, **Lua scripting**, **transactions**, and **high availability** through Redis Sentinel and **automatic partitioning** with Redis Cluster.
21+
Redis is designed for high performance, low latency, and high throughput, making it ideal for real-time applications. It supports persistence, replication, Lua scripting, transactions, and high availability through Redis Sentinel and automatic partitioning with Redis Cluster.
2222

23-
Redis is widely adopted for **caching**, **session management**, **real-time analytics**, **pub/sub messaging**, and **leaderboards** in gaming and web applications. It integrates seamlessly with programming languages like **Python**, **Java**, **Go**, and **Node.js**.
23+
Redis is widely adopted for caching, session management, real-time analytics, pub/sub messaging, and leaderboards in gaming and web applications. It integrates seamlessly with programming languages like Python, Java, Go, and Node.js.
2424

25-
To learn more, visit the [Redis official website](https://redis.io/) and explore the [documentation](https://redis.io/docs/latest/).
25+
To learn more, visit the [Redis website](https://redis.io/) and explore the [Redis documentation](https://redis.io/docs/latest/).

content/learning-paths/servers-and-cloud-computing/redis-data-searching/baseline.md

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,67 @@
11
---
2-
title: Redis Baseline Testing on Google Axion C4A Arm Virtual Machine
2+
title: Test Redis
33
weight: 5
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9-
## Redis Baseline Testing on GCP SUSE VMs
10-
This section performs baseline testing for Redis running on a GCP SUSE Arm64 VM, focusing on data insertion, retrieval, and search performance.
9+
## Perform Redis baseline testing on GCP SUSE VMs
10+
This section shows you how to perform baseline testing for Redis running on a GCP SUSE Arm64 VM, focusing on data insertion, retrieval, and search performance.
1111

1212
### Prerequisites
1313
This command launches the Redis server process in the background. It allows you to run subsequent commands in the same terminal session while Redis continues running.
14-
Start the Redis service in the background:
14+
15+
Start the Redis service:
1516

1617
```console
1718
redis-server &
1819
```
1920

20-
**Check if Redis is active and responding to commands:**
21-
22-
The redis-cli ping command sends a simple health check request to the Redis server. A PONG response confirms that the server is running correctly and the client can communicate with it.
21+
Check if Redis is active and responding to commands:
2322
```console
2423
redis-cli ping
2524
```
26-
27-
output:
25+
The output is similar to:
2826

2927
```output
3028
PONG
3129
```
3230

33-
### Insert Sample Data
34-
These steps populate the Redis database with a sample dataset to validate insertion performance and data persistence. You will create 10,000 key-value pairs using a simple shell loop and verify that the data has been successfully stored.
31+
## Insert sample data
32+
33+
Populate the Redis database with a sample dataset to validate insertion performance and data persistence. You create 10,000 key-value pairs using a simple shell loop and verify that the data has been successfully stored.
34+
35+
Use `redis-cli` to insert 10,000 sample key-value pairs:
3536

36-
Use `redis-cli` to insert **10,000 sample key-value pairs**:
3737
```console
3838
for i in $(seq 1 10000); do
3939
redis-cli SET key:$i "value-$i" > /dev/null
4040
done
4141
```
4242
- This command iterates through numbers **1 to 10,000**, setting each as a Redis key in the format `key:<number>` with the corresponding value `"value-<number>"`.
4343
- The `> /dev/null` part suppresses command output to make the insertion process cleaner and faster.
44+
- The `> /dev/null` part suppresses command output to make the insertion process cleaner and faster.
4445

45-
**Verify Data Storage Count:**
46-
47-
The `DBSIZE` command returns the total number of keys currently stored in the Redis database.
46+
Verify data storage count:
4847

4948
```console
5049
redis-cli DBSIZE
5150
```
5251

52+
The output is similar to:
53+
5354
```output
5455
(integer) 10000
5556
```
56-
Seeing `(integer) 10000` confirms that all key-value pairs were inserted successfully.
5757

58-
**Verify Sample Data Retrieval**
58+
This confirms that all key-value pairs were inserted successfully.
59+
60+
### Verify sample data retrieval
5961

6062
Fetch one of the inserted keys to confirm data correctness:
6163

64+
Verify sample data retrieval:
6265
```console
6366
redis-cli GET key:5000
6467
```
@@ -71,11 +74,12 @@ You should see an output similar to:
7174
"value-5000"
7275
```
7376

74-
### Perform Basic Data Search Tests
77+
## Perform basic data search tests
7578
This step verifies Redis’s ability to retrieve specific data efficiently using unique keys. The `GET` command fetches the value associated with a given key from Redis.
7679

77-
You can test this by retrieving a known key-value pair:
80+
Verify Redis's ability to retrieve specific data efficiently using unique keys. The `GET` command fetches the value associated with a given key from Redis.
7881

82+
Test this by retrieving a known key-value pair:
7983
```console
8084
redis-cli GET key:1234
8185
```
@@ -87,17 +91,16 @@ You should see an output similar to:
8791
```
8892
This confirms that Redis is storing and retrieving data correctly from memory.
8993

90-
### Search for Multiple Keys Using Pattern Matching
94+
## Search for multiple keys using pattern matching
9195
This test demonstrates how Redis can locate multiple keys that match a pattern, useful for exploratory queries or debugging.
9296

9397
Use the `KEYS` command to search for keys matching a pattern:
9498

9599
```console
96100
redis-cli KEYS "key:1*"
97101
```
98-
`KEYS` is fast but **blocks the server** when handling large datasets, so it’s not recommended in production.
99102

100-
You should see an output similar to:
103+
The output is similar to:
101104

102105
```output
103106
1) "key:1392"
@@ -112,8 +115,11 @@ You should see an output similar to:
112115
..........
113116
```
114117

115-
### Production-Safe Searching with SCAN
116-
This step introduces a production-friendly method for iterating through keys without blocking Redis operations.
118+
{{% notice Note %}}
119+
`KEYS` is fast but blocks the server when handling large datasets, so it's not recommended in production.
120+
{{% /notice %}}
121+
122+
## Production-safe searching with SCAN
117123

118124
Use the `SCAN` command for larger datasets — it is non-blocking and iterates safely.
119125

@@ -137,8 +143,9 @@ You should see an output similar to:
137143
Redis will return a cursor value (for example, `9792`).
138144
Continue scanning by reusing the cursor until it returns `0`, meaning the iteration is complete.
139145

140-
### Measure Data Retrieval Performance
141-
This step measures how quickly Redis can retrieve a single key from memory, helping to establish a baseline for data access latency on the Arm-based VM.
146+
## Measure data retrieval performance
147+
148+
Measure how quickly Redis can retrieve a single key from memory, helping to establish a baseline for data access latency on the Arm-based VM.
142149

143150
**Time Single Key Lookup**: Redis operations are extremely fast since data is stored in-memory. To quantify this, the Unix `time` command is used to measure the latency of retrieving a single key using `redis-cli`.
144151

content/learning-paths/servers-and-cloud-computing/redis-data-searching/benchmarking.md

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,45 @@
11
---
2-
title: Redis Benchmarking
2+
title: Benchmark Redis
33
weight: 6
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9+
## Benchmark Redis using redis-benchmark
910

10-
## Redis Benchmarking by redis-benchmark
11-
The `redis-benchmark` tool is an official performance testing utility for Redis. It helps measure to throughput (requests per second) and latency (response delay) across different workloads.
11+
The `redis-benchmark` tool is an official performance testing utility for Redis. It measures throughput (requests per second) and latency (response delay) across different workloads.
1212

1313
### Prerequisites
14-
Ensure Redis server is running and accessible:
14+
15+
Before running benchmarks, verify that Redis is running and accessible:
1516

1617
```console
1718
redis-cli ping
1819
```
1920

20-
If you do not see a "PONG" response, please start redis:
21+
If you don't see a `PONG` response, start Redis:
2122

2223
```console
2324
redis-server &
2425
redis-cli ping
2526
```
2627

27-
### Benchmark SET (Write Performance)
28-
The `SET` benchmark helps validate Redis’s ability to handle high insertion rates efficiently on Arm-based servers.
28+
### Benchmark SET (write performance)
2929

30-
The following command benchmarks data insertion performance:
30+
Benchmark data insertion performance:
3131

3232
```console
3333
redis-benchmark -t set -n 100000 -c 50
3434
```
35-
**Explanation:**
3635

37-
- `-t set`: Runs the benchmark only for **SET** operations.
38-
- `-n 100000`: Performs **100,000 total requests**.
39-
- `-c 50`: Simulates **50 concurrent clients**.
36+
This command:
37+
38+
- Runs the benchmark for SET operations only (`-t set`)
39+
- Performs 100,000 total requests (`-n 100000`)
40+
- Simulates 50 concurrent clients (`-c 50`)
4041

41-
You should see an output similar to:
42+
The output is similar to:
4243

4344
```output
4445
====== SET ======
@@ -85,19 +86,20 @@ Summary:
8586
0.170 0.056 0.167 0.183 0.191 1.095
8687
```
8788

88-
### Benchmark GET (Read/Search Performance)
89-
Now test data retrieval performance separately.
89+
### Benchmark GET (read performance)
90+
91+
Test data retrieval performance:
9092

9193
```console
9294
redis-benchmark -t get -n 100000 -c 50
93-
```
94-
**Explanation:**
9595

96-
- `-t get`: Runs the benchmark only for **GET** operations.
97-
- `-n 100000`: Executes **100,000 total requests**.
98-
- `-c 50`: Simulates **50 concurrent clients** performing reads.
96+
Parameters:
97+
98+
- `-t get`: Runs the benchmark only for GET operations.
99+
- `-n 100000`: Executes 100,000 total requests.
100+
- `-c 50`: Simulates 50 concurrent clients performing reads.
99101

100-
You should see an output similar to:
102+
The output is similar to:
101103

102104
```output
103105
====== GET ======
@@ -141,26 +143,24 @@ Summary:
141143
0.169 0.048 0.167 0.183 0.191 0.807
142144
```
143145

144-
### Benchmark Metrics Explanation
146+
## Interpret the benchmark metrics
145147

146-
- **Throughput:** Number of operations (requests) Redis can process per second.
147-
- **Latency:** Latency reflects the time it takes for Redis to complete a single request, measured in milliseconds (ms).
148-
- **avg:** Average time taken to process a request across the entire test.
149-
- **min:** Fastest observed response time (best case).
150-
- **p50:** Median latency — 50% of requests completed faster than this value.
151-
- **p95:** 95th percentile — 95% of requests completed faster than this value.
152-
- **p99:** 99th percentile — shows near worst-case latency, key for reliability analysis.
153-
- **max:** Slowest observed response time (worst case).
154-
155-
### Benchmark summary
156-
Results from the earlier run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (SUSE Enterprise Server):
148+
The following table summarizes the benchmark results from the earlier run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (SUSE Enterprise Server):
157149

158150
| Operation | Total Requests | Concurrent Clients | Avg Latency (ms) | Min (ms) | P50 (ms) | P95 (ms) | P99 (ms) | Max (ms) | Throughput (req/sec) | Description |
159151
|------------|----------------|--------------------|------------------|-----------|-----------|-----------|-----------|-----------|-----------------------|--------------|
160152
| SET | 100,000 | 50 | 0.170 | 0.056 | 0.167 | 0.183 | 0.191 | 1.095 | 149,700.61 | Measures Redis write performance using SET command |
161153
| GET | 100,000 | 50 | 0.169 | 0.048 | 0.167 | 0.183 | 0.191 | 0.807 | 150,375.94 | Measures Redis read performance using GET command |
162154

163-
- **High Efficiency:** Redis achieved over **150K ops/sec** on both read and write workloads, showcasing strong throughput on **Arm64 (C4A)** architecture.
164-
- **Low Latency:** Average latency remained around **0.17 ms**, demonstrating consistent response times under concurrency.
165-
- **Balanced Performance:** Both **SET** and **GET** operations showed nearly identical performance, indicating excellent CPU and memory optimization on **Arm64**.
166-
- **Energy-Efficient Compute:** The **Arm-based C4A VM** delivers competitive performance-per-watt efficiency, ideal for scalable, sustainable Redis deployments.
155+
Redis demonstrated excellent performance on the Arm64-based C4A VM, achieving over 150K operations per second for both read and write workloads with an average latency of approximately 0.17 ms. Both SET and GET operations showed nearly identical performance characteristics, indicating efficient CPU and memory optimization on the Arm architecture. The Arm-based C4A VM delivers competitive performance-per-watt efficiency, making it ideal for scalable, sustainable Redis deployments.
156+
157+
## What you've accomplished and what's next
158+
159+
In this section, you:
160+
- Benchmarked Redis SET operations, achieving over 149K requests per second with 0.170 ms average latency
161+
- Benchmarked Redis GET operations, achieving over 150K requests per second with 0.169 ms average latency
162+
- Verified that Redis performs efficiently on Google Axion C4A Arm instances
163+
164+
You've successfully benchmarked Redis on Google Cloud's C4A Arm-based virtual machines, demonstrating strong performance for in-memory data operations.
165+
166+
For next steps, consider exploring Redis Cluster for distributed deployments, implementing persistence strategies for production workloads, or testing more advanced data structures like sorted sets and streams. You can also compare performance across different C4A machine types to optimize cost and performance for your specific use case.

0 commit comments

Comments
 (0)