【问题标题】:Redis caching structureRedis缓存结构
【发布时间】:2017-05-31 17:51:37
【问题描述】:

我们计划在 API 端使用 Redis 作为缓存。我根据要求有特定的场景

  1. 保存用户完成的会议
  2. 我们已经根据 ClientID 维护了一个 UserId 列表-- 表示该用户有权访问该客户端

    **会议对象具有以下属性/属性

    1. 会议 ID
    2. 会议类型
    3. 会议日期
    4. 客户标识
    5. 会议状态**

    由于我们在从 SQL DB 获取会议列表时遇到性能问题,因此我们计划使用 Redis 对其进行缓存。我们将根据以下属性/属性从缓存中过滤会议

    1> MeetingType(电话、个人访问) 2> 会议状态(Open、Closed)...等

    到目前为止,我们已经确定了以下方法

    为每个过滤器维护一个密钥

    1> 会议类型
    一个>Meeting:Call, b> Meeting:PersonalVisit

    2> 会议状态 一个>MeetingStatus:Open b>MeetingStatus:Closed

    并使用key的交互为

    过滤数据

查找用户通过个人访问完成的所有公开会议

或者考虑到以下痛点是否有更好的方法

 1. How do I filter     the meeting of only clients of which he/she has
    access of.
 2. How do I achieve dynamic order by on MeetingId/MeetingStatus/....
    etc

Can you guide me where should I be heading for the above implementation

+ 如果你能分享一些关于 redis 的好资源/链接将不胜感激

【问题讨论】:

  • 1.我如何过滤只有他/她有权访问的客户的会议。 2. 如何通过MeetingId/MeetingStatus/....等实现动态排序

标签: caching data-structures redis


【解决方案1】:

Redis 不像关系数据库那样用于查询。但正如我理解的问题。您必须优化/调整您的数据库设置。如果问题仍然存在,那么请使用一些 NOSQL 数据库。 在 redis 中,您可以使用“hack”。您可以为不同的过滤器维护会议的哈希图。
即一种用于会议:呼叫,一种用于会议:PersonalVisit,一种用于会议状态:打开,一种用于会议状态:关闭等

哈希示例

meeting_call [ 1:{meeting_obj1},4:{meeting_obj4} ] // redis hash for 
Meeting:Call filter
meetingstatus_open [ 5:{meeting_obj5},4:{meeting_obj4} ] // redis hash 
MeetingStatus:Open

如果您的过滤器非常少,您可以采用上述方法,简而言之,我在过滤后存储会议。

【讨论】:

  • 我已经实现了这一点,即通过在集合上使用交集基于状态和会议类型过滤会议,但我面临的问题是,发布上述过滤器我从集合中获取会议 ID 列表但我什至必须过滤客户端 ID 上的会议。我如何做到这一点?
  • 我有,我要问的是我想根据两个属性过滤会议,比如会议状态和类型,即打开或关闭和呼叫/PV(这是使用设置的交叉点完成的)但是我该怎么做过滤ClientId,是否可能
猜你喜欢
  • 1970-01-01
  • 2015-10-10
  • 2018-05-25
  • 2016-12-20
  • 2014-08-16
  • 2018-01-30
  • 2018-02-14
  • 1970-01-01
相关资源
最近更新 更多