hash - 如何建模基于路径的数据

标签 hash redis set

我需要在 redis 中对数据建模,其中键是文件路径,每个路径都有 N 个键/值。

我目前正在使用哈希对数据建模。

HSET /products/clothes/pants/501-jeans "title" "Levi 501 Jeans"

这很好用,但是我希望能够获得所有“裤子”散列“ child ”的列表。我可以通过

KEYS /products/clothes/pants/*

但是redis documentation状态 KEYS pattern 不应在生产中使用。

我正在考虑创建一组与哈希关联的所有“路径”,但我仍然不确定如何/是否可以搜索这些路径。

关于如何最好地为此类数据建模的想法?

最佳答案

这是我对数据建模的方式,它似乎运行良好。

resources::/path/foo => Redis Hash of Resource data
resources::/path/foo/bar => Redis Hash of Resource data
resources::/path/foo/cat => Redis Hash of Resource data
resources::/path/foo/cat/dog => Redis Hash of Resource data

children::/path/foo => Redis Map [ /path/foo/bar, /path/foo/cat/, /path/foo/dog ]
children::/path/foo/bar => Redis Map [ /path/foo/bar, /path/foo/cat ]
children::/path/foo/bar/cat => Redis Map [ /path/foo/dog ]

每当我添加/删除resources::key

时,我都必须管理children::maps

我选择使用 Redis ma​​pschildren:: 进行建模,因此不可能有重复的路径键,但是使用列表也可能有效(易于

关于hash - 如何建模基于路径的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15059012/

相关文章:

c# - ServiceStack.Redis 服务可用性

java - 运行时数千个巨大数据集的 Jaccard 相似度算法

php - 在 MYSQL/PHP 中检查重复文本字段的最佳方法是什么?

java - 用 Java 重写 Gimli_hash

c++ - std::set::insert:使用用户定义的类复制

algorithm - 分组集算法

c++ - 为什么插入 set<vector<string>> 这么慢?

android - 生成 apk 后 key 散列无效以及如何为许多设备解决此问题?

redis - Redis 与其他数据库(如 sql 或 mongodb)在内存或存储方面的区别?

java - Spring 绝地武士。 SCAN 和 KEYS 键不匹配