我正在使用Redis Store和GetRelatedEntities调用将userId与该用户的组相关联。
在服务调用中,我想看看在调用昂贵的数据库调用以便第一次获取组之前,组是否曾被存储到缓存中(我认为这是非常标准的)
如果之前没有为该userId调用StoreRelatedEntities,则GetRelatedEntities调用将返回一个空List。但是,空列表可能具有用户没有任何组的含义,因此我需要一种方法来确定之前没有为该用户设置组。
有什么办法可以区分这两种状态吗?
由于
答案 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);