SOMS/test/rediswebapiTest/Controllers/RedisTestController.cs
2024-07-15 10:31:26 +08:00

78 lines
2.5 KiB
C#

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using RedisDemo;
using StackExchange.Redis;
using System;
using System.Diagnostics;
using System.Threading.Tasks;
namespace rediswebapiTest.Controllers
{
[ApiController]
[Route("[controller]")]
public class RedisTestController : ControllerBase
{
private readonly IDatabase _redis;
private readonly IServer _server;
private readonly RedisHelper _client;
private readonly IMemoryCache _cache;
private readonly QuratznetTest _quratznetTest;
public RedisTestController(RedisHelper client, IMemoryCache cache, QuratznetTest quratznetTest)
{
_client = client;
_redis = client.GetDatabase();
_cache = cache;
_server = client.GetServer();
_quratznetTest = quratznetTest;
_client.GetSubscriber().Subscribe("__keyevent@0__:expired", (channel, notificationType) =>
{
Debug.WriteLine(channel + "|" + notificationType);
Task.Run(() =>
{
while (true)
{
Task.Delay(1000).Wait();
Debug.WriteLine(notificationType);
}
});
});
//_redis.StreamCreateConsumerGroupAsync("Consumer", "test").Wait();
}
[HttpGet]
public async Task<IActionResult> Get([FromQuery] string key)
{
var res = await _server.MemoryStatsAsync();
var dis = res.ToDictionary();
foreach (var item in dis.Values)
{
var s = item.ToString();
Console.WriteLine(s);
}
string name = _redis.StringGet(key);
return Ok("");
}
[HttpPut]
public IActionResult Put([FromQuery] string key, string value)
{
var res = _redis.StringSet(key, value, TimeSpan.FromSeconds(10));
return Ok(res);
}
[HttpPost]
public async Task<IActionResult> Post([FromQuery] string key, string value)
{
var res = await _redis.StreamAddAsync(key, "test", value);
return Ok(res);
}
[HttpDelete]
public async Task<IActionResult> Delete([FromQuery] string key, string value)
{
var res = await _redis.StreamReadAsync(key, "");
return Ok(res);
}
}
}