Open shenlanchenwei opened 6 years ago
object 支持 string 和 byte[]
存 byte[] 的话不需要序列化
//
// 摘要:
// 只有在字段 field 不存在时,设置哈希表字段的值。
//
// 参数:
// key:
// 不含prefix前辍
//
// field:
// 字段
//
// value:
// 值(string 或 byte[])
public static bool HashSetNx(string key, string field, object value);
注释有标明的。
你好再请教一个问题,我现在Redis只有主从模式,没有集群模式 有这个(主从)的配置示例吗? 没有看到相关示例,非常感谢!!
主从模式要使用 CSRedis.RedisSentinelClient,目前没有封装到 CSRedisClient 和 RedisHelper 中。
using (var sentinel = new RedisSentinelManager("host1:123", "host2:456"))
{
sentinel.Add(Host); // add host using default port
sentinel.Add(Host, 36379); // add host using specific port
sentinel.Connected += (s, e) => sentinel.Call(x => x.Auth(Password)); // this will be called each time a master connects
sentinel.Connect("mymaster"); // open connection
var test2 = sentinel.Call(x => x.Time()); // use the Call() lambda to access the current master connection
}
谢谢了!!!
CSRedisClient 和 RedisHelper 提供的集群模式功能,也可以现实高可用。
static redis1 = new CSRedisClient("192.168.1.9:6379,password=,defaultDatabase=1,poolsize=1");
static redis2 = new CSRedisClient("192.168.1.9:6379,password=,defaultDatabase=2,poolsize=1");
var client = new CSRedisClient(
key => {
//在这里判断服务有效性
try { redis1.Ping(); return "192.168.1.9:6379/1"; } catch { }
try { redis2.Ping(); return "192.168.1.9:6379/2"; } catch { }
return "192.168.1.9:6379/1";
},
"192.168.1.9:6379,password=,defaultDatabase=1",
"192.168.1.9:6379,password=,defaultDatabase=2");
这个做法有点生硬,之后会优化。
HashSetNx 方法第三个参数value建议改进成string类型,容易造成误解,结果序列化结果不对,或者增加泛型支持