具有数据源、用户和查询的 Redis 缓存
Redis Cache With Data Sources, Users, and Queries
我开始使用 Redis 作为缓存,我不确定我的应用程序的最佳结构。整体结构如下:
我需要能够做的一些事情是:
- 刷新数据源的所有内容(所有用户和所有查询)。
- 刷新特定用户的所有内容(e.x:我需要删除用户 1 及其来自数据源 1 和数据源 2 的查询)。
树中列出的所有内容都是访问特定数据源上用户 运行 查询结果的关键的一部分。我是 Redis 的新手,一直在使用 Hashes 和 Sets 之间来回切换。
选项 1(套):
DataSource1 => user1, user2, user3, user4
DataSource1:user1 => Query1, Query2, Query3
DataSource1:user1:Query1 => Results
刷新东西会很昂贵,因为我必须找到匹配 user1 或 DataSource1 的所有键。
部分选项 2(哈希):
users:user1 DataSource1:Query1 Results1 DataSource2:Query1 Results2
仍然不确定刷新数据源或用户在这里如何工作。
还有人有其他的thoughts/modifications吗?
根据这些信息,我将使用数据源 -> 用户和用户 -> 查询的散列进行设置。这样刷新用户只是删除哈希,刷新数据源(你可能做的更少)循环遍历集合并删除用户,然后删除数据源 - >用户集。
如果您使用集合的第一个选项,那么每次刷新用户查询时都会有更多的操作,但这实际上取决于访问的数据。
另外,取决于您为每个用户存储的查询数量,散列比集合更有效。
我开始使用 Redis 作为缓存,我不确定我的应用程序的最佳结构。整体结构如下:
我需要能够做的一些事情是:
- 刷新数据源的所有内容(所有用户和所有查询)。
- 刷新特定用户的所有内容(e.x:我需要删除用户 1 及其来自数据源 1 和数据源 2 的查询)。
树中列出的所有内容都是访问特定数据源上用户 运行 查询结果的关键的一部分。我是 Redis 的新手,一直在使用 Hashes 和 Sets 之间来回切换。
选项 1(套):
DataSource1 => user1, user2, user3, user4
DataSource1:user1 => Query1, Query2, Query3
DataSource1:user1:Query1 => Results
刷新东西会很昂贵,因为我必须找到匹配 user1 或 DataSource1 的所有键。
部分选项 2(哈希):
users:user1 DataSource1:Query1 Results1 DataSource2:Query1 Results2
仍然不确定刷新数据源或用户在这里如何工作。
还有人有其他的thoughts/modifications吗?
根据这些信息,我将使用数据源 -> 用户和用户 -> 查询的散列进行设置。这样刷新用户只是删除哈希,刷新数据源(你可能做的更少)循环遍历集合并删除用户,然后删除数据源 - >用户集。
如果您使用集合的第一个选项,那么每次刷新用户查询时都会有更多的操作,但这实际上取决于访问的数据。
另外,取决于您为每个用户存储的查询数量,散列比集合更有效。