草庐IT

hash_algorithm

全部标签

Redis 集群 : Is it possible to obtain one hash slot from different keys?

我从Redis集群教程中了解到,集群只有16384个槽(0-16383)。哈希槽是通过以下命令计算的:CRC16(KEY)mod16384。因此,例如某些key的CRC16等于16385,哈希槽将为1。对于另一个key,CRC16等于32769,哈希槽将再次为1。它会引起一些冲突吗?还是第一个会被第二个重写? 最佳答案 如果我理解你的问题,不,这不是冲突。每个key属于一个hashsolt,但每个hashslot可以有多个key。CLUSTERGETKEYSINSLOT槽数:https://redis.io/commands/clu

algorithm - 将字符串映射到唯一的 0..1 浮点值,同时保持顺序

我想使用Redis对字符串值进行排序(使用排序集),但我只能为此目的使用float。我正在寻找一种算法来将字符串转换为浮点0..1值,同时保持顺序。我的意思是s1有这样的算法吗?P.S.我将使用这样的算法对用户名进行排序,在大多数情况下,具有匹配分数的玩家会有完全不同的用户名。所以在大多数情况下,这两种方法都应该有效,但仍然存在冲突的空间。另一方面,字符串将被更不正确地排序,如果几乎相同的用户名排序不正确,这是可以接受的。 最佳答案 每个字符都可以映射到它的ASCII数字。如果将每个字符串转换为其等效的float,连接所有ASCII

algorithm - 如何将 1 亿个字符串映射到 10 万个 int?

我有大约1亿个简单的键值对(它是遗留数据,永远不需要更新,并且键是随机字符串),我想将它们存储在redis中以供查询。我的想法是,我把前四个字符作为hashkey,存储成hash类型,所以redis中有大约一百万个hashkey,每个hashkey有大约1000个子键。但事情并没有按计划进行。出于某种原因,我发现一些哈希键只有一个子键,但有些哈希键有超过500,000个子键,这些子键可能无法非常有效地编码在内存中。所以我想知道是否有一些简单易懂的算法可以将我的1亿个字符串平均分成10万个桶(int)。当我拿起一个字符串时,我可以使用相同的算法知道它去了哪里。谢谢!!

redis - 如何对 SET 进行排序并获取完整的 HASH

我是Redis的新手,我不得不说直到现在我都很喜欢它:)我遇到了一个问题,我不确定如何以更有效的方式解决它。我有一个SET的HASH.每个HASH描述一个帖子。这是创建和存储HASH的代码://CreatetheHASH$key='post:'.$post->getId();$this->redis->hSet($key,'created',$post->getCreated());$this->redis->hSet($key,'author',$post->getAuthor());$this->redis->hSet($key,'message',$post->getMessag

hash - 即使 HGET 给我数据,HGETALL 和 HKEYS 也没有响应

我在RedisHash中插入了一些用MessagePack打包的二进制数据。我检查了数据是由redis控制台“monitor”插入的。这里的问题是我无法使用HGETALL、HKEYS或HVALS找到那些数据,尽管HGET给了我数据。$redis-cli-hlocalhostredislocalhost:6379>HGETALL检查;(空列表或集合)redislocalhost:6379>HKEYS检查;(空列表或集合)redislocalhost:6379>HVALS检查;(空列表或集合)redislocalhost:6379>HGET检查“¥x96¥01¥xcd¥x1f¥xc2¥xc

algorithm - 低延迟分布在内存 HashMap (计数映射)中

我正在尝试构建一个可以存储几个(许多增量操作(每个键平均10次增量)-增量操作可以从一堆(~10)不同的节点。最后一个操作获取所有键/值在所有增量之后给定HashMap的(最好是流式传输)完成。在这一点上,我们基本上会删除计数图阅读所有key后。我们也保证他们会一旦我们开始读取键/值计数就不要写入最本质的要求是每个增量操作都应该具有超低的延迟。耐用性不是问题,但正确性才是最重要的。我研究了Redis和Hazelcast。从具有使用适合此用例的技术经验的人那里征求意见。 最佳答案 您可以使用RedisHash对于每个计数图,并使用HI

ruby-on-rails - 如何在Rails 4 上显示Redis 的Hash 值?

我是Redis和Rails4的新手。我已经安装了Redis2.8.4和“redis-rails”gem。我可以将hash和key&value保存到Redis并且下面的命令有效redis.hset(cartid,prodductid,20)如果我去Redis,我可以看到值(value)127.0.0.1:6379[1]>hscan"cart_b342b01837edd4073cab312e93864b3a"01)"0"2)1)"product_1"2)"20"3)"product_5"4)"20"5)"product_2"6)"20"7)"product_3"8)"20"现在,我想获取C

没有 "CREATE ALGORITHM"和 "DEFINER"的 mysqldump

在我的数据库备份和导出中,我得到如下内容:/*!50001DROPTABLE`vTime`*/;/*!50001DROPVIEWIFEXISTS`vTime`*/;/*!50001CREATEALGORITHM=UNDEFINED*//*!50013DEFINER=`db_user`@`%`SQLSECURITYDEFINER*//*!50001VIEW`vTime`ASselect...*/;这会导致恢复时出现问题,因为“CREATEALGORITHM”和“DEFINER”部分在尝试恢复时会失败。有没有办法让mysqldump只做一个简单的CREATEVIEW?附加问题:/*!500

MySQL 5.6 - 即使使用 ALGORITHM=inplace 表也会锁定

我正在MySQL5.6数据库上的一个包含6000万行的大表上运行以下ALTER命令:ALTERTABLE`large_table`ADDCOLUMN`note`longtextNULL,ALGORITHM=INPLACE,LOCK=NONE;尽管同时指定了ALGORITHM=INPLACE和LOCK=NONE,但表会被锁定并实质上关闭应用程序,直到迁移完成。我通过检查SHOWOPENTABLES命令输出中In_use列的值验证了该表确实被锁定。它被设置为1。根据我在MySQL文档中收集到的信息,此操作不应锁定表。并且,如果MySQL在没有锁的情况下无法继续执行,则该命令应该失败。我将数

PHP & MySQL : using bcrypt hash and verifying password with database

我正在使用AndrewMoore先生的方法(HowdoyouusebcryptforhashingpasswordsinPHP?)对用户密码进行哈希处理。我所做的是我有一个注册页面,它使用$bcrypt=newBcrypt(12);$pass=$_POST['password'];//registerpasswordfield$hash=$bcrypt->hash($pass);//theninserts$hashintodatabasewithusersregisteredemail(I'vecheckedmymysqldatabaseanditindeedhasanhashedit