2014-05-21 54 views
0

我是Redis的一个非常有用的NOOB,这是我第一次使用这个应用程序。我希望你能帮助我。 我试图从字典中创建一个单词列表并放入Redis数据库。我有一个包含200,000个单词的文本文件。我怎样才能把它放在我的数据库中?如何将文件中的数据导入Redis数据库?

我正在使用Laravel和My Redis配置工作正常,因为我能够执行此命令。

$redis = Redis::connection(); 
Redis::set('name', 'MYname'); 
$name = Redis::get('name'); 
echo $name; 

在此先感谢!

回答

0

什么是字典用于? 如果只有200,000字,你可以简单地把它们放到一个集合中。

for word in text_file: 
    Redis::sadd('dictionary_name', word) 

,并使用

Redis::sismember('dictionary_name', word) 

检查whethor与否这个词在字典。

这里的文档约redis set

+0

感谢您的回复。对不起,我对Redis很新。 Redis :: sadd('dictionary_name',word)会被执行一次还是需要为每个单词执行? – Yuzo

+0

[sadd](http://redis.io/commands/sadd)可以带一堆成员(但坦率地说,我不知道它是否可以包含包含200,000个成员的数组)。而sadd的时间复杂度为:O(N)其中N是要添加的成员的数量。因此,使用带有200,000个参数的单个sadd并使用带有1个参数的for循环都需要O(N)时间。在这种情况下,我认为for循环很好。如果数量超过20万,也许将它们分成批次是更好的解决方案。 – Yifei

+0

好的,我明白了。我会尝试你的解决方案。非常感谢你! – Yuzo

0

最后,我可以通过这个命令来上传我的数据。

$filename = 'file.txt'; 

$fp = @fopen($filename, 'r'); 

if ($fp) { 
    $array = explode("\n", fread($fp, filesize($filename))); 
} 

$redis = Redis::connection(); 
Redis::sadd('dictionary', $array); 
+0

行读取$ redis = Redis :: connection();似乎没有做任何事情,是吗? $ redis没有被引用。 – Roobie

相关问题