StackExchange.Redis

一.StatckExchange.Redis的核心对象

1.ConnectionMultiplexer

private static conStr="localhost:6379";
private object obj;
private static ConnectionMultiplexer redis;
public static ConnectionMultiplexer red{
get{
if(redis==null)
{
lock(obj)
{
if(redis==null||!redis.IsConnected)
{
redis=ConnectionMultiplexer.Connect(conStr);
}
}
return redis;
}
}
}

2.String类型的基本存储


public async Task<IDatabase> Db()
{
return redis.GetDatabase();
}
public async Task<bool> AddKey(string key,string str)
{
if(await Db().StringSetAsync(key,str))
{
return true;
}
return false;
}
public async Task<string> Get(string key)
{
string str=await Db().StringGet(key);
return str;
}
public async Task<bool> Remove(string key)
{
if(await Db().KeyExistsAsync(key)==false)
{
return false;
}
return Db.KeyDelete(key);
}

三.List

1.有序排列,只可以重复。类似于堆栈可以push和pop,不同点在于两边都可以弹出和添加;

ListLeftPush(key,Value);左侧压栈

ListLeftPop(key)左侧出栈

ListRightPush(key,value);右侧压栈

ListRightPop(key);右侧出栈

ListGetByIndex(key,index);获取某个位置上的值

RedisValue

RedisValue[]

四.Set数据类型

1.无序排列,值不可以重复。增删改查速度较快

SetAdd(key,vale)

SetContains(key,value);判断set中是否存在某个元素

SetLength(key)获得set中的元素的个数

setRemove(key,value)从set中删除元素

refisValue[]SetMembers(key)获取集合中的元素

5.SortedSet

1.如果对于数据遍历顺序有要求,可以使用SorttedSet

SortedSetAdd(key,member,score)再可以这个sortedset中增加member,并且给这个member打分,如果member存在,则覆盖

SortedSetIncrement(key,member,score)

SortedSetDecrement(key,member,score)

StortedSetEntry[]SortedSetRangeByTankWithScores(RedusKey key,long start=0,long stop=-1,Order order=Order.Ascending)

SortedSetEntry[] items = db.SortedSetRangeByRankWithScores("Hotwords");
foreach(var item in items)
{
Console.WriteLine(item.Element+"="+item.Score);
}

五.Hash

1.键值对的集合 类似于Dictionary

六.Geo类型

1.用来保存兴趣点(POI,point of insert)的坐标信息 ,可以实现两点之间的计算

db.eo.Add("ShangHai",New GeoEntry(2133,13232231,"1"));

db.eo.Add("ShangHai",New GeoEntry(23133,132222231,"2"));

double dist=db.GeoDistance("ShangHai","1","2",GeoUnit.Meters);

GeoRadiusResult[] results = db.GeoRadius("ShangHai", "2", 200, GeoUnit.Meters);//获取”2”这个周边 200
米范围内的 POI

七.Redis的批量操作

1.GeoAdd(Rediskey,GeoEntry[]values) SortedSetAdd(RedisKey key,SortedSetEntry[]values)

2,如果一次性的操作不是同类的数据,那么使用批量魔术

IBatch batch=db.GetBatch();

db.GeoAdd(key,value);

db.StringSet(key,value);

batch.Execute();//会把当前连接的Create Batch() Execute()之间的操作一次性提交给服务器

八.Redis中的分布式锁

RedisValue token = Environment.MachineName;

//LockTake(keymtiken,TimeSpan)

if(db.LockTake("mylock",token,TimeSpan.FromSeconds(10)))

{

try

{

int key=client.Get<int>("key");

client.Add("key",key+10);

}

catch(Exception ex)

{

Console.WriteLine(ex.Message);

}finally

{

client.Database.LockRelease(Key,Token);

}

}

else

{

Console.WRiteLine("锁住了");

while(!TryAgain(10))

{

Thread.Sleep(1);

}

}

private static StackExchangeRedisCacheClient client;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: StackExchange.Redis 是一个.NET平台下的开源Redis客户端库,它提供了一种高性能、稳定和易于使用的方式来与Redis服务器进行通信。它支持异步和同步操作,并提供了一些高级特性,如管道、发布/订阅等。 StackExchange.Redis 具有以下特点: - 快速:通过使用高性能、低级别的Redis通信协议,StackExchange.Redis 可以实现高效的数据访问。 - 可扩展性:StackExchange.Redis 支持分区功能,使它能够在多个Redis节点上分布数据,并且可以在需要时轻松地添加或删除节点。 - 可靠性:StackExchange.Redis 有一个内置的连接池来管理与Redis服务器的连接,从而可以提高性能和可靠性,并避免了频繁的连接/断开开销。 - 易用性:StackExchange.Redis 提供了一个简单的API,使得开发人员能够轻松地与Redis进行交互。 总的来说,如果你在.NET平台上使用RedisStackExchange.Redis 应该是你的首选。 ### 回答2: StackExchange.Redis 是一个基于Redis的 .Net客户端库,由StackExchange团队开发和维护。Redis内存数据库是非常流行的键值对存储,支持复杂数据结构,速度快,有完善的集群方案,在web应用程序、消息系统等应用场景中被广泛使用。 StackExchange.Redis提供了方便易用、高性能、可扩展的API,可以直接向Redis发送命令、订阅和发布消息、连接Redis集群等。他进一步扩展了Redis命令,使其更加简单易用,并支持事务、管道和多线程操作。同时,StackExchange.Redis支持Redis的高级特性,如SortedSet和Hash;而且,它还能够在运行时自动检测Redis服务状态,支持Redis Sentinel、Cluster和多节点环境。 此外,StackExchange.Redis还支持应用程序跟踪(application tracing),采用异步API调用,从而提高了性能和可伸缩性。与其他Redis客户端库不同,StackExchange.Redis实现了连接池、序列化和反序列化器等高级功能,使用起来更加方便和优雅,可以减少代码量和复杂性。 总的来说,StackExchange.Redis是一个很不错的Redis客户端库,它提供了强大而与Redis完全兼容的API,打破了语言壁垒,使得开发者可以在自己喜欢的语言环境(例如.Net)中使用 Redis 。 许多一流的公司如 StackOverflow和GitHub都使用 StackExchange.Redis,证明了它的可靠性和性能优势。 ### 回答3: StackExchange.RedisRedis数据库的一个适用于 .NET 编程语言的客户端。它提供了一组丰富的功能,用于在 .NET 框架内与Redis数据库进行交互。 StackExchange.Redis旨在为 .NET 开发人员提供最佳的Redis集成体验。StackExchange.Redis提供了许多优点,其中最主要的有: 高度优化的读写操作。StackExchange.Redis客户端库具有非常高的效率,用于从Redis服务器读取和写入数据时,可大大减少网络流量和延迟。这使得它成为处理高吞吐量负载的很好的选择。 支持许多复杂数据类型。除了提供基本的字符串和整数类型之外,StackExchange.Redis还支持许多复杂的数据类型,例如哈希表、排序集合和列表数据类型。这些数据类型将极大地帮助开发人员设计和实施高效的Redis应用程序。 易于使用和集成。StackExchange.Redis具有完美的适配性,可以很简单地与 .NET 中的 ASP.NET 应用程序、Windows 服务、控制台应用程序等相集成。此外,它具有丰富的文档、教程和API reference,可以让开发者轻松入手。 另外,StackExchange.Redis还包括许多其他特性,如:连接复用、事务支持、发布与订阅、管道等。这使得它成为在 .NET 编程语言中使用Redis数据库的非常好的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值