当前位置: 首页 > 面试题库 >

如何设置(覆盖)哈希中的所有项目

高勇
2023-03-14
问题内容

我想在哈希中设置所有条目。(SetAllEntriesToHash)

它必须在运行之前清除哈希中的所有项目。

它与GetAllEntriesFromHash相反。


问题答案:

您在这里有几个选择。

1) 您可以通过使用高级Redis API让ServiceStack为您解决此问题。

public class Poco
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

...

// Client
var client = new RedisClient("localhost", 6379);

// This will store the object for you in a Redis hash.
client.StoreAsHash(new Poco { Id = 1, Name = "Test Name", Description = "Test Description" });

// This will fetch it back for you.
var result = client.GetFromHash<Poco>(1);

这种方法将使您不必直接处理散列细节。ServiceStack会为您解决所有问题,并将您发送的对象自动填充到哈希中。如果要更新该对象,只需向其发送一个具有相同ID的新对象即可。

不利的一面是,您将放弃对如何将数据存储在Redis中的控制,从而获得更轻松的编程体验。

2) 您自己处理所有东西。没有预先构建的 SetAllEntriesToHash 函数

// Client
var client = new RedisClient("localhost", 6379);

// Clear all existing keys
var keysToClear =  new Dictionary<string,string>();
client.GetHashKeys("xxxxx").ForEach(k => keysToClear.Add(k, ""));
client.SetRangeInHash("xxxxx", keysToClear);

// Save new key/values.  
client.SetRangeInHash("xxxxx", new List<KeyValuePair<string, string>>
{
    new KeyValuePair<string, string>("1", "value 1"),
    new KeyValuePair<string, string>("2", "value 2"),
    new KeyValuePair<string, string>("3", "value 3"),
});

或者,仅删除并重新创建哈希值可能会更容易。

我还要提醒您注意 RedisNativeClient
。它允许您运行直接映射到http://redis.io/commands的 Redis命令。



 类似资料:
  • 每当我使用eclipse'source'菜单覆盖hashcode()时,它会在类中生成以下代码 谁能解释一下为什么它要做所有这些计算(乘法和加法),为什么它不简单地返回 ?

  • 我有3个实体,学生,年级和班级。代码如下所示。这只是一个示例。 学生班级 学校班级: 等级等级: 所以我检查了hibernate文档中的hashcode和equals,它对于DB中存在的实体工作得非常好。我遇到的问题是,在保存到数据库之前,新的瞬态实体对象。我使用HashSet对学生和班级进行了单独的测试,如果它试图添加相同的对象,集合的大小不会增加。 这里我有一个新的成绩集,准备这个集并保存到数

  • 我使用eclipse生成Object的hashCode和equals方法的覆盖,并生成了一些关于hashCode覆盖的问题。下面的hashCode()是否正确? 问题: -为什么eclipse会生成两行代码?我认为将两个结果相加是合适的。知道为什么它们是分开的任务吗? -最终的int素数可以是任何素数吗? -整数结果是否应始终为 1?

  • 问题内容: 我对Java有一个小问题。如果我重写该方法,使得: 这将导致所有键具有相同的索引。是将它们放置在地图的链接列表结构中,还是仅包含替换了所有其他键的最后一个键? 问题答案: 假设您没有覆盖始终返回true 的方法,它们将放置在地图的链接列表结构中。不同的键可能具有相同的hashCode,但是如果所有键都具有相同的hashCode,则您的HashMap将成为链接列表,这首先使使用此结构的目

  • 问题内容: 在许多Redis教程(例如this)中,数据存储在一个集合中,但是多个值组合在一个字符串中(即,一个用户帐户可能作为两个条目存储在集合中,“ user:1000:username”和“用户:1000:密码”)。 但是,Redis也有哈希值。似乎更有意义的是使用“ user:1000”散列,其中包含“ username”条目和“ password”条目。无需将字符串串联以访问特定值,您只

  • 问题内容: 所以我有一个Java哈希图,如下所示: 我想删除所有值为“ Two”的项目 如果我做类似的事情: 只有第一个被删除,我想全部删除,该怎么做? 问题答案: 编辑: 这种简洁方法的(显着)缺点是您基本上被迫发表评论,说出类似 否则,一些好心的工程师将有一天会尝试为您简化并破坏它。发生这种情况…有时候好心做的事甚至是Future You!