Install-Package StackExchange.Redis
Install-Package ServiceStack.Redis
实例 ID:密码 格式,自定义账号使用 用户名@密码 格式;免密认证实例无需密码。SELECT 命令切换数据库,此时只能使用 DB0。如业务依赖多 DB,请改用支持 SELECT 命令的客户端。using System;using StackExchange.Redis;class Program{static void Main(string[] args){string host = "192.xx.xx.2";int port = 6379;string password = "crs-xxxx:密码"; // 默认账号密码格式:实例ID:密码var config = new ConfigurationOptions{EndPoints = { { host, port } },Password = password,DefaultDatabase = 0,ConnectTimeout = 2000, // 连接超时(毫秒)SyncTimeout = 2000, // 同步超时(毫秒)ConnectRetry = 3, // 连接重试次数KeepAlive = 30, // 心跳间隔(秒)AbortOnConnectFail = false // 连接失败不终止};using (var redis = ConnectionMultiplexer.Connect(config)){var db = redis.GetDatabase();// 写入数据db.StringSet("name", "腾讯云分布式缓存数据库");// 读取数据var value = db.StringGet("name");Console.WriteLine($"get name: {value}");// 设置带过期时间的 Keydb.StringSet("session:user123", "session_data", TimeSpan.FromSeconds(3600));// 哈希操作db.HashSet("user:1001", new HashEntry[]{new HashEntry("name", "张三"),new HashEntry("age", "28")});var userName = db.HashGet("user:1001", "name");Console.WriteLine($"user name: {userName}");// 列表操作db.ListLeftPush("queue:tasks", new RedisValue[] { "task1", "task2", "task3" });var task = db.ListRightPop("queue:tasks");Console.WriteLine($"dequeued task: {task}");}}}
using System;using ServiceStack.Redis;class Program{static void Main(string[] args){string host = "192.xx.xx.2";int port = 6379;string password = "crs-xxxx:密码";// ServiceStack 4.0 及以上版本连接池var manager = new PooledRedisClientManager(poolSize: 200, // 连接池大小poolTimeOutSeconds: 3, // 获取连接超时(秒)readWriteHosts: new[] { $"{password}@{host}:{port}" });using (var client = manager.GetClient()){// 写入数据client.Set("name", "腾讯云分布式缓存数据库");// 读取数据var value = client.Get<string>("name");Console.WriteLine($"get name: {value}");// 设置带过期时间的 Keyclient.Set("session:user123", "session_data", TimeSpan.FromSeconds(3600));// 哈希操作client.SetEntryInHash("user:1001", "name", "张三");client.SetEntryInHash("user:1001", "age", "28");var userName = client.GetValueFromHash("user:1001", "name");Console.WriteLine($"user name: {userName}");}manager.Dispose();}}
using System;using StackExchange.Redis;class Program{static void Main(string[] args){var config = new ConfigurationOptions{EndPoints = { { "192.xx.xx.2", 6379 } },Password = "myuser@MyPassword", // 代理模式自定义账号:用户名@密码整体作为密码传入,不单独设置 User(区别于直连模式 ACL 的账号名/密码分离传参)ConnectTimeout = 2000,SyncTimeout = 2000,AbortOnConnectFail = false};using (var redis = ConnectionMultiplexer.Connect(config)){var db = redis.GetDatabase();db.StringSet("key", "value");Console.WriteLine(db.StringGet("key"));}}}
using System;using System.Security.Cryptography.X509Certificates;using StackExchange.Redis;class Program{static void Main(string[] args){var config = new ConfigurationOptions{EndPoints = { { "192.xx.xx.2", 6379 } },Password = "crs-xxxx:密码",Ssl = true, // 启用 SSLSslProtocols = System.Security.Authentication.SslProtocols.Tls12,ConnectTimeout = 2000,SyncTimeout = 2000,AbortOnConnectFail = false};// 证书验证回调config.CertificateValidation += (sender, cert, chain, errors) =>{// 加载 CA 证书进行验证var caCert = new X509Certificate2("/path/to/ca.pfx");return cert.Issuer == caCert.Subject;};using (var redis = ConnectionMultiplexer.Connect(config)){var db = redis.GetDatabase();db.StringSet("ssl_test", "encrypted_connection");Console.WriteLine(db.StringGet("ssl_test"));}}}
参数 | 说明 | 推荐值 |
EndPoints | 实例连接地址。代理模式为 VIP 地址,直连模式为分片节点地址 | - |
Password | 认证密码 | 默认账号格式: 实例 ID:密码 |
ConnectTimeout | 连接超时(毫秒) | 2000 |
SyncTimeout | 同步操作超时(毫秒) | 2000 |
ConnectRetry | 连接重试次数 | 3 |
KeepAlive | 心跳间隔(秒) | 30 |
AbortOnConnectFail | 连接失败是否终止 | false |
参数 | 说明 | 推荐值 |
poolSize | 连接池大小 | 200 |
poolTimeOutSeconds | 获取连接超时(秒) | 3 |
readWriteHosts | 读写节点地址列表 | - |
ConnectionMultiplexer 是线程安全的,应作为单例全局复用,避免频繁创建和销毁。文档反馈