Use this file to discover all available pages before exploring further.
The official .NET clients for Redis are NRedisStack and StackExchange.Redis. NRedisStack extends StackExchange.Redis with additional support for Redis modules like JSON, Search, and TimeSeries.
using StackExchange.Redis;using NRedisStack;using NRedisStack.RedisStackCommands;// Create connectionvar redis = ConnectionMultiplexer.Connect("localhost:6379");var db = redis.GetDatabase();// Test connectionvar pong = db.Ping();Console.WriteLine($"Connected: {pong.TotalMilliseconds}ms");
2
Perform basic operations
Execute Redis commands:
// SET and GET operationsdb.StringSet("user:1:name", "Alice");var name = db.StringGet("user:1:name");Console.WriteLine($"Name: {name}"); // Output: Name: Alice// Work with numbersdb.StringSet("counter", 0);db.StringIncrement("counter");db.StringIncrement("counter", 5);var count = db.StringGet("counter");Console.WriteLine($"Counter: {count}"); // Output: Counter: 6// Expirationdb.StringSet("session:abc", "session_data", TimeSpan.FromHours(1));
// Store user data as a hashvar user = new HashEntry[]{ new HashEntry("name", "Alice"), new HashEntry("email", "alice@example.com"), new HashEntry("age", 30)};db.HashSet("user:1", user);// Get specific fieldvar name = db.HashGet("user:1", "name");Console.WriteLine(name);// Get all fieldsvar userData = db.HashGetAll("user:1");foreach (var field in userData){ Console.WriteLine($"{field.Name}: {field.Value}");}// Increment numeric fielddb.HashIncrement("user:1", "age", 1);
// Add items to a listdb.ListRightPush("queue", new RedisValue[] { "task1", "task2", "task3" });// Get list lengthvar length = db.ListLength("queue");// Pop item from listvar task = db.ListLeftPop("queue");Console.WriteLine(task); // task1// Get range of itemsvar tasks = db.ListRange("queue", 0, -1);foreach (var t in tasks){ Console.WriteLine(t);}
// Add members to a setdb.SetAdd("tags", new RedisValue[] { "python", "redis", "database" });// Check membershipvar isMember = db.SetContains("tags", "python");Console.WriteLine(isMember); // true// Get all membersvar tags = db.SetMembers("tags");// Set operationsdb.SetAdd("tags2", new RedisValue[] { "redis", "cache", "nosql" });var common = db.SetCombine(SetOperation.Intersect, "tags", "tags2");
// Add scored membersdb.SortedSetAdd("leaderboard", new SortedSetEntry[]{ new SortedSetEntry("alice", 100), new SortedSetEntry("bob", 150), new SortedSetEntry("charlie", 120)});// Get top scores (descending)var topPlayers = db.SortedSetRangeByRankWithScores( "leaderboard", 0, 2, Order.Descending);foreach (var player in topPlayers){ Console.WriteLine($"{player.Element}: {player.Score}");}// Get rankvar rank = db.SortedSetRank("leaderboard", "alice", Order.Descending);// Increment scoredb.SortedSetIncrement("leaderboard", "alice", 25);
using NRedisStack;using NRedisStack.RedisStackCommands;using System.Text.Json;var redis = ConnectionMultiplexer.Connect("localhost:6379");var db = redis.GetDatabase();var json = db.JSON();// Store JSON documentvar user = new{ name = "Alice", email = "alice@example.com", age = 30, tags = new[] { "developer", "redis" }};json.Set("user:1", "$", user);// Get JSON documentvar result = json.Get("user:1");// Update specific fieldjson.Set("user:1", "$.age", 31);// Get specific fieldvar age = json.Get("user:1", "$.age");
var server = redis.GetServer("localhost:6379");await foreach (var key in server.KeysAsync(pattern: "user:*", pageSize: 100)){ Console.WriteLine(key); var value = await db.StringGetAsync(key); Console.WriteLine(value);}