【问题标题】:How can I clear all Instances of type X in ServiceStack Redis Client如何在 ServiceStack Redis 客户端中清除所有 X 类型的实例
【发布时间】:2012-06-03 03:49:31
【问题描述】:

我想从 Redis Db 中清除所有 X 实例以进行测试。但我找不到 redisClient.As().CLEAR() 方法?如何清除所有 X 实例?

我可以使用

添加 X 个实例
var client=new PooledRedisClientManager(ConfigurationManager.AppSettings["RedisServer"]).GetClient();
X x=new X();
client.As<X>().Store(x);

所有 x 实例都作为 urn:X:x.id 模式添加到 Db。

【问题讨论】:

  • 你的意思是清除特定键中的所有项目吗?
  • 我添加了额外的信息来提问 eyossi

标签: redis servicestack


【解决方案1】:

如果您使用的是 RedisNativeClient 类,则可以使用此方法删除特定键:

 public int Del(string key)

如果你想删除所有键,你可以用 * 作为键调用 Del

你也有这些方法:

 public void FlushDb()
 public void FlushAll()

如果你使用的是 RedisClient 类,你有这个方法:

 public bool Remove(string key) // Again i guess you can use the * for delete all keys

【讨论】:

    【解决方案2】:

    client.As().DeleteAll();

    我认为命名“删除”是为了关系。

    User.Cars.Remove("红车")

    如果你想删除对象“删除”:)

    删除(“红车”)

    它不起作用。我越来越奇怪{“'del'命令的参数数量错误,sPort:19570,LastCommand:”}错误。

    【讨论】:

      【解决方案3】:

      IRedisTypedClient 实现了具有DeleteAll() 方法的通用IBasicPersistenceProvider<T> 接口。所以你所追求的只是:

      client.As<T>().DeleteAll();
      

      对于更细粒度的删除选项,您还有:

      client.As<T>().DeleteById(id);
      client.As<T>().DeleteByIds(ids);
      

      【讨论】:

      • DeleteAll 不起作用。我越来越奇怪{“'del'命令的参数数量错误,sPort:19570,LastCommand:”}错误。我正在使用 Redis 服务器、客户端和实用程序的 Windows 32 和 x64 端口。 redis-2.4.5-win32-win64。操作系统是 Win 7 Pro 64 位。
      • DeleteAll 为我工作github.com/ServiceStack/ServiceStack.Redis/blob/master/tests/… 如果您发现问题,您可以提交一个独立的失败单元测试的要点/拉取请求,该测试显示该问题
      • 本次测试你的redis服务器配置是什么? (基于 Linux,基于 Windows 对比)
      • 没关系,Tests 适用于 Linux 和 Windows redis-server 版本。
      • 在调用 DeleteAll() 之前,您必须确保有要删除的内容。只是 API 的一个奇怪之处。
      猜你喜欢
      • 1970-01-01
      • 2015-11-28
      • 2012-05-22
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多