GetRelatedEntities <t>空列表(没有父记录)vs null(尚未设置记录)</t>

时间:2014-09-19 12:42:07

标签: servicestack servicestack.redis

我正在使用Redis Store和GetRelatedEntities调用将userId与该用户的组相关联。

在服务调用中,我想看看在调用昂贵的数据库调用以便第一次获取组之前,组是否曾被存储到缓存中(我认为这是非常标准的)

如果之前没有为该userId调用StoreRelatedEntities,则GetRelatedEntities调用将返回一个空List。但是,空列表可能具有用户没有任何组的含义,因此我需要一种方法来确定之前没有为该用户设置组。

有什么办法可以区分这两种状态吗?

由于

1 个答案:

答案 0 :(得分:0)

无论如何都无法区分Redis中的空集合和不存在的集合,因为Redis会自动删除集合,只要它没有任何元素以及查询不具有的集合的行为&# 39; t存在或为空是相同的,即它返回一个空集合。

我建议在调用StoreRelatedEntities时维护一个具有缓存的自定义userIds集合,例如:

redis.AddItemToSet("userGroupsCache", user.Id);
redis.As<User>().StoreRelatedEntites(user.Id, groups);

然后您可以查询该集是否已被缓存,例如:

var userCacheExists = redis.SetContainsItem("userGroupsCache", user.Id);