StackExchange.Redis无法删除指定对象

fantasy_song 2017-10-10 04:03:35

用StackExchange.Redis删除集合中的对象无法删除,有劳各位大神帮忙看下

删除的方法:

//移除列表指定键上与该值相同的元素
public long ListRemove(string redisKey, string redisValue)
{
redisKey = AddKeyPrefix(redisKey);
return _db.ListRemove(redisKey, redisValue);
}

//调用
SERedisHelper seRedis = new SERedisHelper();//StackExchange.Redis帮助类
List<UserLoginResponse> users = seRedis.ListRange<UserLoginResponse>("key");//所有key值相等的数据
List<UserLoginResponse> user = users.Where(a => a.imei == "imei").ToList();//根据条件筛选出的数据
foreach (var item in user)
{
seRedis.ListRemove(key, item.ToJson());//一个个删除筛选出的对象
}

无法全部删除筛选出的所有对象,只能删除最后一个

之前用NServiceKit.Redis删除也是一样,都无法一个个删除,弄了两天了,请大神帮忙看看
NServiceKit.Redis方式也发一下吧:

//删除方法
public static void List_Delete<T>(string key, T t)
{
using (IRedisClient redis = prcm.GetClient())
{
var redisTypedClient = redis.GetTypedClient<T>();
redisTypedClient.Lists[key].RemoveValue(t);
}
}

//调用方法
List<UserLoginResponse> users= RedisHelper.List_GetList<UserLoginResponse>("key");
List<UserLoginResponse> user= userLoginResponseList
.Where(a => a.imei == "imei").ToList();
foreach (var item in user)
{
RedisHelper.List_Delete("key", item);
}


...全文
486 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fantasy_song 2017-10-20
  • 打赏
  • 举报
回复
还是没有用,最后换了Hash_Set的方式
  • 打赏
  • 举报
回复
还有你用的什么序列化器
  • 打赏
  • 举报
回复
ib.Execute();
少了这句不执行
fantasy_song 2017-10-10
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
批量删除应该用Batch删除吧? ListRemove是有返回值的,返回值就是删除了多少个对象,你可以输出这个值看看到底移除了什么
user中有多个对象,用foreach一个个删除的,只有集合中的倒数第二个对象能删除,返回值是1,其它全部是0 你说的Batch只找到下面的方式,也不行 public void ListRemove2(string redisKey, string redisValue) { redisKey = AddKeyPrefix(redisKey); IBatch ib = _db.CreateBatch(); ib.ListRemoveAsync(redisKey, redisValue); }
  • 打赏
  • 举报
回复
批量删除应该用Batch删除吧? ListRemove是有返回值的,返回值就是删除了多少个对象,你可以输出这个值看看到底移除了什么

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧