如何在Redis缓存中添加/更新/删除值

lfapxunr  于 2023-05-16  发布在  Redis
关注(0)|答案(2)|浏览(160)

我是分布式缓存的新手,我有下面的代码,它将数据库表中的用户列表值存储该高速缓存中,如果它不存在。

var cacheKey ="samplekey";

var userListdata = //contains list of users from a db table

var data = _distributedCache.GetString(cacheKey);
if (!string.IsNullOrEmpty(data))
{
    var tModel = JsonConvert.DeserializeObject<List<user>>(data);
    return new CommandActionResult<List<user>>(tModel, CommandActionStatus.NothingModified);
}
else
{
    var jsonData = JsonConvert.SerializeObject(userListdata);
    _distributedCache.SetString(cacheKey, jsonData);
    return new CommandActionResult<List<user>>(null, CommandActionStatus.NothingModified);
}

如果有新用户要从表中添加/删除/更新,如何添加/更新/删除samplekey缓存键?

f4t66c6m

f4t66c6m1#

你可以改变方法。在userListdata中保存每个用户,就像在redis缓存中保存一个唯一的keyValuePair一样。然后,您可以使用它进行插入/更新/删除。

// add the users to azure redis cache
foreach (var user in userListdata)
{
    _distributedCache.StringSet(user.Id, JsonConvert.SerializeObject(user));
}
// update/delete your records
var data = _distributedCache.GetString(cacheKey);
if (!string.IsNullOrEmpty(data)){
    _distributedCache.KeyDelete(cacheKey);
    _distributedCache.StringSet(cacheKey, newValues);
}
// else insert a new one...
xriantvc

xriantvc2#

要更新.netcore中列表中的项目进行分布式缓存,请使用Distributed cache库中提供的ListSetByIndexAsync函数,可通过IDistributedCache接口访问

await _cache.ListSetByIndexAsync(key,index, redisValue);
  • 密钥是缓存密钥
  • index是要更新索引位置
  • redisValue是列表中要更新的项

要访问索引,请使用IndexOf函数。

相关问题