2017-05-29 170 views
0

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

  1. 保存由用户所做的会议
  2. 我们已经保持用户ID兑ClientID--一个列表,它 代表用户客户端的访问

    ** A会议对象具有如下属性/特性

    1. MeetingId
    2. MeetingType
    3. MeetingDate
    4. 客户端Id
    5. MeetingStatus **

    正如我们所面临的性能问题,同时正从SQL数据库会议的列表,我们计划使用Redis的缓存它。我们将过滤从高速缓存在下列属性的会议/属性

    1> MeetingType(呼叫,个人访问) 2>会议状态(开,关)...等

    截至目前,我们有完成以下方法

    维护每个滤波器

    1> MeetingType
    的密钥的>Meeting:Call, b>Meeting:PersonalVisit

    2>会议状态 一>MeetingStatus:Open B>MeetingStatus:Closed

    并使用关键的作用,为

筛选数据找到该用户曾通过个人访问完成的所有公开会议

或者有更好的方法考虑下面的痛点

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

+0

1.我如何筛选他/她有 访问权限的客户端的会议。 2.我如何通过MeetingId/MeetingStatus/...实现动态订单 等 – Vipul

回答

0

Redis不是用来查询你对关系数据库做的。但正如我了解这个问题。你必须优化/调整你的数据库设置。如果问题仍然存在,那么去一些NOSQL数据库。 在redis中,您可以使用“hack”。您可以为不同的过滤器维护会议的散列图。 i。
i。Ë一个会议:呼叫,一个会议:PersonalVisit,一个MeetingStatus:开放,一个是MeetingStatus:休息等

散列的例子

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 

你可以在上面的方法,如果您的过滤器简而言之,我在过滤后存储会议。

+0

我已经实现了这个基于状态和meetingtype的过滤会议,使用集合上的交集,但是我面临的问题是post上面提到的过滤器我从相交的集合中获得了会议ID列表,但我必须甚至过滤CLIE上的会议。我如何实现这一目标? – Vipul

+0

@Vipul,我想你还没有读过前两行。 – Ambika

+0

我有,我问的是我想过滤会议上的两个属性说会议状态和类型即打开或关闭和调用/ PV(这是使用set交集),但我如何过滤ClientId,是否有可能或不 – Vipul