我正在使用 redis 进行缓存,但也在我的一项服务中使用 ICacheClient 使用 Get 和 Set 等直接从缓存中写入和读取。
Redis 设置为将值保存到磁盘。所以如果我关闭 Redis 并重新启动它,缓存的数据就在那里。但是,如果我在调试模式下运行我的 servicestack 服务并停止网站并再次重新启动它,servicestack 会在第一次调用 servicestack 服务时清除 redis 缓存。我怎样才能关闭它,或者它是一个错误。缓存中的项目不应过期,并且在检查缓存中的各个项目时,将其设置为不过期,因此并不是它即将过期,而是该服务堆栈似乎在重新启动后第一次调用时刷新数据库。
public ICacheClient CacheClient { get; set; }
public object Get(KeyValues request)
{
var value = CacheClient.Get<object>(request.Key);
var response = new KeyValuesResponse { Key = request.Key, Value = value };
return value;
}
public void Put(KeyValuesRecord request)
{
if (request.Key != null)
{
CacheClient.Set(request.Key,request.Value);
}
}
public void Post(KeyValuesRecord request)
{
CacheClient.Set(request.Key, request.Value);
}
public void Delete(KeyValues request)
{
CacheClient.Remove(request.Key);
}
当我调用第一个 Get 时,例如 url:http://localhost:4099/api/KeyValues/mykey
整个 redis db(0) 被清除。