redis 간단 한 대기 열 실현
redis 의 List 구조 자체 가 하나의 링크(양 방향 링크)이기 때문에 우리 의 대열 이 먼저 나 오 는 요구 에 부합 합 니 다.
저 는 StackExchange.Redis 라 는 구성 요 소 를 사용 하여 redis 를 작 동 합 니 다.예전 에는 service.Stack.Redis 를 사용 해 왔 습 니 다.나중에 이 라 이브 러 리 가 업그레이드 되면 개인 사용 횟수 에 제한 이 있 고 비용 을 지불해 야 호출 제한 이 없습니다.
조작 redis 간단 한 포장 은 다음 과 같 습 니 다:
public static class RedisHelper
{
public static int i = 0;
private static string redisConnectionString = ConfigurationManager.AppSettings["RedisConnectionString"].ToString();
private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
i++;
return ConnectionMultiplexer.Connect(redisConnectionString);
});
public static ConnectionMultiplexer Instance
{
get
{
return lazyConnection.Value;
}
}
}
이 조작 류 가 있 으 면 우 리 는 redis 를 조작 할 수 있 습 니 다.간단 한 list 에 대한 조작 은 다음 과 같 습 니 다.
/// <summary>
/// redis
/// </summary>
public class SimpleRedisQueue
{
public void LeftPush(string key, string value)
{
var redis = RedisHelper.Instance.GetDatabase();
redis.ListLeftPush(key, value);
}
public string RightPop(string key)
{
var redis = RedisHelper.Instance.GetDatabase();
return redis.ListRightPop(key);
}
}
테스트 코드 는 다음 과 같 습 니 다:우선 데 이 터 를 생산 하 는 프로그램 이 필요 하 다.
static void Main(string[] args)
{
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
for (var i = 0; i < 99999999; i++)
{
new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "a_" + i.ToString());
}
});
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
for (var i = 0; i < 99999999; i++)
{
new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "b_" + i.ToString());
}
});
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
for (var i = 0; i < 9999; i++)
{
new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "c_" + i.ToString());
}
});
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
for (var i = 0; i < 99999999; i++)
{
new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "e_" + i.ToString());
}
});
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
for (var i = 0; i < 99999999; i++)
{
new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "f_" + i.ToString());
}
});
Console.ReadKey();
}
그리고 소비 대기 열 이 있 는 프로그램:
static void Main(string[] args)
{
var queue = new SimpleRedisQueue();
while (true)
{
var v = queue.RightPop("test1");
Console.WriteLine(v == null ? " " : v);
}
}
테스트 결과 캡 처신뢰성 과 안정성 에 대한 요구 가 높 지 않 은 응용 장면 은 redis 를 사용 하여 간단 하고 편리 하 게 실현 할 수 있다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redis 해시에 대한 완벽한 가이드변경 가능하므로 필요에 따라 쉽게 변경하고 업데이트할 수 있습니다. Redis 해시는 구조가 평평하므로 JSON에서와 같이 여러 수준을 가질 수 없습니다. redis 해시의 명명 규칙은 hash:key 로 입력되므로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.