gpt4 book ai didi

search - Redis 快速文件系统搜索

转载 作者:可可西里 更新时间:2023-11-01 11:22:11 26 4
gpt4 key购买 nike

我是 Redis 的新手,并且我想迭代给定计算机上的所有文件和文件夹并将其保存在 Redis 数据库中,这样我以后就可以按名称搜索文件或文件夹。

我想知道我应该如何将数据存储在 Redis 中以及如何使搜索尽可能快?

谢谢

最佳答案

您的需求可以分为:

  1. 迭代并保存在 Redis 中。
  2. 从 Redis 获取并搜索。

数据类型的选择取决于数据的用途。

Redis 为我们提供了“KEY/VALUE”关系。

获取一些示例数据:

 File Name        Location
----------------------------
Sys.log /root/tmp
info.txt /var/log
redis.log /var/log/redis/redis.log
abc.log /app/task
abc.log /home/test

请注意,在不同位置可以有 n 个同名文件。这意味着我们不能使用以文件名作为键的普通键/值。

应该牢记的一种关系是亲子关系。目录(父)将有文件(子)或其他目录。

还应该有一种区分文件和目录的方法。

解决方案:

  • 迭代文件系统并存储在REDIS中(目录设计)

创建 Redis 目录集,其内容作为文件名,其他目录也有自己的列表。

并且列表中的每个条目都应该有一个前缀,可以用来识别条目是文件还是目录。如果它是一个目录,那么您可以使用它来进一步搜索更多文件。

这使我们能够使用这些集合来打印他们所有的 child 。

   127.0.0.1:6379> SADD "/var/log" "File:info.txt"
(integer) 1
127.0.0.1:6379> SMEMBERS "/var/log"
1) "File:info.txt"
127.0.0.1:6379> SADD "/var/log" "Dir:redis"
(integer) 1
127.0.0.1:6379> SMEMBERS "/var/log"
1) "Dir:redis"
2) "File:info.txt"



content of redis
127.0.0.1:6379> SADD "redis" "redis.log"
(integer) 1
127.0.0.1:6379> SADD "redis" "error.log"
(integer) 1
127.0.0.1:6379> SMEMBERS redis
1) "redis.log"
2) "error.log"
  • 搜索 REDIS(输入一个文件名打印它存在的所有可能位置。)

    当我们为目录创建集合时迭代文件系统时,我们并行创建一个存储 .

    文件列表的内容将显示所有文件所在的位置。

    127.0.0.1:6379> lpush "info.txt" "/var/log"
    (integer) 1
    127.0.0.1:6379> lpush "info.txt" "/tmp"
    (integer) 2
    127.0.0.1:6379> lrange "info.txt" 0 -1
    1) "/tmp"
    2) "/var/log"

注意:为了快速体验 REDIS,请尝试一次执行一组命令。即使用 multi 或使用 eval(lua 脚本)。

希望这能为您的设计开个好头。

关于search - Redis 快速文件系统搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20960497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com