Skip to content

Commit 7447c06

Browse files
committed
chore: remove redis example
1 parent 87789f3 commit 7447c06

File tree

1 file changed

+0
-155
lines changed

1 file changed

+0
-155
lines changed

index.bs

Lines changed: 0 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,158 +1144,3 @@ ws.onopen = () => {
11441144
</pre>
11451145
</div>
11461146

1147-
### Redis-Like Server ### {#redis-example}
1148-
1149-
This example demonstrates a minimalistic Redis-like key-value store server with get, set, and delete operations.
1150-
1151-
<div class="example">
1152-
<pre class="example-code" highlight="js" title="redisWorker.js">
1153-
// Simple in-memory key-value store
1154-
const store = new Map();
1155-
1156-
// Load data from persistent storage
1157-
const savedData = storage.get("data");
1158-
if (savedData) {
1159-
// Restore data from storage
1160-
for (const [key, value] of Object.entries(savedData)) {
1161-
store.set(key, value);
1162-
}
1163-
}
1164-
1165-
// Save data to persistent storage
1166-
async function saveData() {
1167-
await storage.put("data", Object.fromEntries(store));
1168-
}
1169-
1170-
export default {
1171-
connect(event) {
1172-
const port = event.ports[0];
1173-
1174-
port.onmessage = async (event) => {
1175-
const { command, key, value } = event.data;
1176-
let response;
1177-
1178-
// Handle different Redis-like commands
1179-
switch (command) {
1180-
case "GET":
1181-
response = {
1182-
status: "success",
1183-
value: store.has(key) ? store.get(key) : null
1184-
};
1185-
break;
1186-
1187-
case "SET":
1188-
store.set(key, value);
1189-
await saveData();
1190-
response = { status: "success" };
1191-
break;
1192-
1193-
case "DEL":
1194-
const deleted = store.delete(key);
1195-
await saveData();
1196-
response = {
1197-
status: "success",
1198-
deleted
1199-
};
1200-
break;
1201-
1202-
default:
1203-
response = {
1204-
status: "error",
1205-
message: "Unknown command"
1206-
};
1207-
}
1208-
1209-
port.postMessage(response);
1210-
};
1211-
1212-
// Handle disconnection
1213-
port.addEventListener("close", () => {
1214-
// Make sure data is saved when client disconnects
1215-
waitUntil(saveData());
1216-
});
1217-
}
1218-
}
1219-
</pre>
1220-
1221-
<pre class="example-code" highlight="js" title="server.js">
1222-
export default {
1223-
async fetch(request) {
1224-
const url = new URL(request.url);
1225-
1226-
// Create or access the Redis worker
1227-
// We use a single worker for the entire Redis server
1228-
const worker = new ServerlessWorker("./redisWorker.js", "redis-server");
1229-
const port = worker.port;
1230-
1231-
// Handle POST requests for Redis commands
1232-
if (request.method === "POST") {
1233-
// Parse the command from the request body
1234-
const command = await request.json();
1235-
1236-
// Create a Promise that will be resolved with the response
1237-
const { promise, resolve } = Promise.withResolvers();
1238-
1239-
// Set up message handler
1240-
port.onmessage = (event) => {
1241-
resolve(new Response(JSON.stringify(event.data), {
1242-
headers: { "Content-Type": "application/json" }
1243-
}));
1244-
};
1245-
1246-
// Send the command to the worker
1247-
port.postMessage(command);
1248-
1249-
// Wait for the response
1250-
return await promise;
1251-
}
1252-
1253-
return new Response("Invalid method", {
1254-
status: 400,
1255-
headers: { "Content-Type": "text/plain" }
1256-
});
1257-
}
1258-
}
1259-
</pre>
1260-
1261-
<pre class="example-code" highlight="js" title="client.js">
1262-
// Redis client example
1263-
1264-
// Function to send a command to the Redis server
1265-
async function redisCommand(command, key, value = null) {
1266-
const payload = { command, key };
1267-
if (value !== null) {
1268-
payload.value = value;
1269-
}
1270-
1271-
const response = await fetch("https://redis.example.com", {
1272-
method: "POST",
1273-
headers: { "Content-Type": "application/json" },
1274-
body: JSON.stringify(payload)
1275-
});
1276-
1277-
return await response.json();
1278-
}
1279-
1280-
// Example usage
1281-
async function example() {
1282-
// Set a value
1283-
await redisCommand("SET", "greeting", "Hello, ServerlessWorker!");
1284-
console.log("Set greeting key");
1285-
1286-
// Get the value
1287-
const result = await redisCommand("GET", "greeting");
1288-
console.log("Get greeting:", result.value);
1289-
1290-
// Delete the key
1291-
const deleted = await redisCommand("DEL", "greeting");
1292-
console.log("Deleted greeting:", deleted.deleted);
1293-
1294-
// Verify it's gone
1295-
const afterDelete = await redisCommand("GET", "greeting");
1296-
console.log("After delete:", afterDelete.value);
1297-
}
1298-
1299-
example();
1300-
</pre>
1301-
</div>

0 commit comments

Comments
 (0)