【问题标题】:Redis Caching Structure use CaseRedis 缓存结构用例
【发布时间】:2017-06-21 00:01:43
【问题描述】:

问题说明:我们的模块之一(票务模块 - 存储过程)需要 4-5 秒从数据库返回数据。此存储过程支持 7 -8 个过滤器 + 它连接 4-5 个表以获取存储在票证表中的 ID 文本,例如(客户端名称、票证状态、票证类型 ...),这阻碍了 SP 的性能.

当前技术栈:ASP.Net 4.0 Web API,MS SQL 2008

我们计划引入 Redis 作为缓存服务器和 Node js,目的是提高性能和可扩展性。

用例:我们有服务票证模块,它有以下属性

  1. TicketId
  2. 客户标识
  3. 出票日期
  4. 工单状态
  5. 票证类型

此模块的每个用户都可以访问修复客户端数量,即

  • User1 可以访问客户端 1、2、3、4 的票证......
  • User2 可以访问客户端 1、2、5、7 的票证......

所以基本上当 User1 访问 Ticket 模块时,他应该能够过滤 TicketId、Client、Ticket Date (from 和 To)、Ticket Status (Open, Hold, In Process ...) 和 Ticket Type (Request , Complaint, Service .....) + 由于 User1 只能访问 Client 1 ,2 3, 4......,缓存应该只给出他有权访问的客户的票证列表。

如果你们能分享你的观点,我们应该如何构建 Redis,即我们应该为上述每个项目使用什么,即 hashset、set、sorted set ... + 我们应该如何根据访问权限过滤票证,将不胜感激的客户和用户有。

【问题讨论】:

    标签: redis


    【解决方案1】:

    Redis 是一个键/值存储。我会使用具有如下结构的哈希集: 键:ticketId 子键:clientId、ticketDate、ticketStatus、ticketType

    搜索、排序等 - 从应用程序或/和 LUA 中以编程方式处理。

    【讨论】:

    • 完美!。我们已经使用 Hashset 来存储整个 Ticket Objects 和 Sets 来维护用于过滤的索引,例如 TicketStatus_Open、TicketStatus_Closed、TicketType_Request.......等等。但是我们被困在,一旦我们获得票证 ID 列表后过滤,我如何将 TicketId 列表减少到特定用户有权访问或循环访问的客户端的 TicketId 列表(如上所述)过滤列表并检查用户是否有权访问resp票的客户端只是解决方案-
    猜你喜欢
    • 1970-01-01
    • 2015-10-10
    • 2016-09-04
    • 2018-05-25
    • 1970-01-01
    • 2022-07-12
    • 2016-12-20
    • 2020-04-22
    • 2016-06-04
    相关资源
    最近更新 更多