草庐IT

hash_algorithm

全部标签

如何使用C#中的Lambda表达式操作Redis Hash结构,简化缓存中对象属性的读写操作

Redis是一个开源的、高性能的、基于内存的键值数据库,它支持多种数据结构,如字符串、列表、集合、散列、有序集合等。其中,Redis的散列(Hash)结构是一个常用的结构,今天跟大家分享一个我的日常操作,如何使用Redis的散列(Hash)结构来缓存和查询对象的属性值,以及如何用Lambda表达式树来简化这个过程。一、什么是Redis Hash结构Redis Hash结构是一种键值对的集合,它可以存储一个对象的多个字段和值。例如,我们可以用一个Hash结构来存储一个人的信息,如下所示:HSETperson:1id1HSETperson:1nameAliceHSETperson:1age20上面

sorting - 使用 SORT 命令从 Redis 中的排序集中获取 HASH 字段

例如,在redis-cli中,我尝试创建一个这样的排序集:zaddsortedset112233我创建了一个这样的散列:hsetdata1hellohsetdata2goodbyehsetdata3sir我的目标是将标识符存储在已排序的集合中,并获取存储在data散列中的字符串,该散列按已排序的集合排序。这是我到目前为止尝试过的:sortsortedsetbynosortgetdata->*...输出:1)(nil)2)(nil)3)(nil)实际上我期望*通配符应该是存储在所谓的排序集中的标识符之一,但它似乎没有对排序集中的每个具体标识符执行替换.我是在尝试以正确的方式解决问题,还是

sorting - 使用 SORT 命令从 Redis 中的排序集中获取 HASH 字段

例如,在redis-cli中,我尝试创建一个这样的排序集:zaddsortedset112233我创建了一个这样的散列:hsetdata1hellohsetdata2goodbyehsetdata3sir我的目标是将标识符存储在已排序的集合中,并获取存储在data散列中的字符串,该散列按已排序的集合排序。这是我到目前为止尝试过的:sortsortedsetbynosortgetdata->*...输出:1)(nil)2)(nil)3)(nil)实际上我期望*通配符应该是存储在所谓的排序集中的标识符之一,但它似乎没有对排序集中的每个具体标识符执行替换.我是在尝试以正确的方式解决问题,还是

redis - Redis HASH Key 和 Field 的互换性如何?

我计划通过以下方式使用Redis哈希作为map的map:[version->[key->序列化数据]]应用和数据设计建议使用Rediskey作为version,Redisfield作为key。在我们的例子中,这意味着只存储几十个Redis键,每个键都有数千万个字段。似乎与Redis文档中的用例场景不对称。简单的获取/设置/删除操作在性能方面是否可以?不会使用key过期和其他Redis高级技术。 最佳答案 您当然可以使用哈希数据结构以这种方式存储您的数据。与仅使用简单的KV字符串(即version:key作为键,data作为值)相比,

redis - Redis HASH Key 和 Field 的互换性如何?

我计划通过以下方式使用Redis哈希作为map的map:[version->[key->序列化数据]]应用和数据设计建议使用Rediskey作为version,Redisfield作为key。在我们的例子中,这意味着只存储几十个Redis键,每个键都有数千万个字段。似乎与Redis文档中的用例场景不对称。简单的获取/设置/删除操作在性能方面是否可以?不会使用key过期和其他Redis高级技术。 最佳答案 您当然可以使用哈希数据结构以这种方式存储您的数据。与仅使用简单的KV字符串(即version:key作为键,data作为值)相比,

algorithm - 如果用户访问 n 次,则计算唯一用户数

我想在广告网络中实现FreqCapping。我想在一天中仅n次向唯一用户提供事件。如果n=1,我可以用redis中的BloomFilter来实现,但通常n大于1。有没有针对这个问题的数据结构(甚至是概率数据结构)?那是在redis中实现的吗? 最佳答案 听起来你在描述Count-minsketch,虽然Redis核心没有它,RedisBloom确实:) 关于algorithm-如果用户访问n次,则计算唯一用户数,我们在StackOverflow上找到一个类似的问题:

algorithm - 如果用户访问 n 次,则计算唯一用户数

我想在广告网络中实现FreqCapping。我想在一天中仅n次向唯一用户提供事件。如果n=1,我可以用redis中的BloomFilter来实现,但通常n大于1。有没有针对这个问题的数据结构(甚至是概率数据结构)?那是在redis中实现的吗? 最佳答案 听起来你在描述Count-minsketch,虽然Redis核心没有它,RedisBloom确实:) 关于algorithm-如果用户访问n次,则计算唯一用户数,我们在StackOverflow上找到一个类似的问题:

redis - Redis Hash Hmset是在Transaction中执行的吗?

假设我正在使用HMSETmyhashfield1"Hello"field2"World"在我的redis中设置两个字段,而其他人正在使用HGETALLkey获取所有键,在这种情况下他们有机会得到结果field1吗?或者结果可能仅为null或field1,field2。 最佳答案 Redis保证HMSET和HGETALL都是原子执行的。所以你要么得到空回复,要么得到myhash的所有字段。 关于redis-RedisHashHmset是在Transaction中执行的吗?,我们在Stack

redis - Redis Hash Hmset是在Transaction中执行的吗?

假设我正在使用HMSETmyhashfield1"Hello"field2"World"在我的redis中设置两个字段,而其他人正在使用HGETALLkey获取所有键,在这种情况下他们有机会得到结果field1吗?或者结果可能仅为null或field1,field2。 最佳答案 Redis保证HMSET和HGETALL都是原子执行的。所以你要么得到空回复,要么得到myhash的所有字段。 关于redis-RedisHashHmset是在Transaction中执行的吗?,我们在Stack

algorithm - Redis 类似 Twitter 的关注/取消关注设计模式

假设我们正在复制Twitter的关注功能。据我所知,现在每个人都同意以下使用Redis的设计。joe之后的所有推文都存储在一个排序集“ss:joe”中,key=tweet_id,score=tweet_timestamp因此,当joe关注ladygaga时,ladygaga的推文将添加到“ss:joe”,到目前为止一切顺利。问题是:当joe取消关注ladygaga时,如何从“ss:joe”中删除ladygaga的推文?遍历每条“ss:joe”推文并删除属于ladygaga的推文已经过时了。我能想到的最好办法是为每个存储自己的推文的用户维护另一个排序集,这样ladygaga就会有她的排序