【问题标题】:Redis ServiceStack - Easy getting and setting of a group of values?Redis ServiceStack - 轻松获取和设置一组值?
【发布时间】:2012-10-07 04:52:09
【问题描述】:

我正在根据唯一标识符存储设备的日期时间信息:

redisClient.Set("lastDateTime:ID000011112222", DateTime.Now);

我正在存储其他信息,例如 IP 地址:

redisClient.Set("ipAddress:ID000011112222", "0.0.0.0");

现在我想获取 lastDateTime 的一组键/值。 我可以得到所有的钥匙:

var keysSet = redisClient.SearchKeys("lastDateTime:*");

如何获取所有键及其值的集合(或列表)?

【问题讨论】:

    标签: c# nosql redis set servicestack


    【解决方案1】:

    如果您的目标是在一次调用中获取所有内容,我建议您将所有内容存储在一个集合中。这样做不应该有任何显着的性能损失。

    如果您确实必须将值存储在许多键中,那么您必须像您正在做的那样执行 KEYS 命令,然后将输出传递给 MGET(我认为这是 GetValues()) .

    【讨论】:

    • 小心使用KEYS,引用文档:This command is intended for debugging and special operations, such as changing your keyspace layout. Don't use KEYS in your regular application code. If you're looking for a way to find keys in a subset of your keyspace, consider using sets.redis.io/commands/keys
    • 那么如果我将所有内容存储在一个集合中,更新单个项目的过程是什么?我必须知道它在集合中的索引吗?
    • 您使用集合函数(HSET、HGET 等)来设置和获取集合中的值。就像主存储有键和值一样,集合也有自己的。因此,如果您想操作这些项目,您必须知道各个键,但您也可以在一次调用中提取整个集合并搜索它(假设集合不是很大)。在您的情况下,您可以创建两组,一组用于存储 lastdatetime,另一组用于 ipaddress。
    【解决方案2】:

    我最终选择了一个哈希,
    设置值:

    redisClient.SetEntryInHash("urn:dateTime", "ID001122", DateTime.Now.ToString());
    

    获取所有 ID 和值的字典:

    var hash = redisClient.GetAllEntriesFromHash("urn:dateTime"); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-25
      • 2011-04-17
      • 2010-10-02
      • 2012-01-11
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      相关资源
      最近更新 更多