caching - Redis缓存结构

标签 caching data-structures redis

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

  1. 保存用户完成的 session
  2. 我们已经根据 ClientID 维护了一个 UserId 列表—— 表示该用户可以访问该客户端

    ** session 对象具有以下属性/属性

    1. session 编号
    2. session 类型
    3. session 日期
    4. 客户编号
    5. session 状态**

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

    1> session 类型(电话、个人访问) 2> session 状态(打开、关闭)...等

    到目前为止,我们已经完成了以下方法

    为每个过滤器维护一个键

    1> session 类型
    a> session :通话, b> session :个人访问

    2> session 状态 a> session 状态:打开 b> session 状态:关闭

    并使用key的交互为

  3. 过滤数据

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

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

 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 分享一些好的资源/链接,我们将不胜感激

最佳答案

Redis 不像关系数据库那样用于查询。但正如我所理解的问题。您必须优化/调整您的数据库设置。如果问题仍然存在,那么去寻找一些 NOSQL 数据库。 在redis中,你可以使用“hack”。您可以为不同的过滤器维护 session 的 HashMap 。
即一种用于 Meeting:Call,一种用于 Meeting:PersonalVisit,一种用于 MeetingStatus:Open,一种用于 MeetingStatus:Closed 等

哈希示例

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

如果你的过滤器很少,你可以使用上面的方法,总之我是过滤后存储 session 。

关于caching - Redis缓存结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44241529/

相关文章:

javascript - 关于javascript/jquery缓存的问题

Linux 文件系统百万符号链接(symbolic link)与百万文件

mysql - 将 MySQL innodb 数据库加载到内存中

c++ - 大型、偶尔拼接列表的数据结构选择

mysql - 限制 LEFT JOIN 组的数量

C结构数组段错误

java - Redis Replication和Cluster区别

node.js - 无法从套接字 io 接收 redis 数据

android - Android 中的 NSURLCache 替代方案

lua - Redis Lua eval 和 pubsub - 在消息上发送命令?