zoukankan      html  css  js  c++  java
  • redis 缓存用户账单策略

      最近项目要求分页展示用户账单列表,为提高响应使用redis做缓存,用到的缓存策略和大家分享一下。

      需求描述:展示用户账单基本信息以时间倒序排序,筛选条件账单类型(所有,订单收入、提现、充值...)。

         账单信息分成两部分缓存:1.用户账单ID 列表;2.账单基本信息。先查询到用户账单ID 列表,再根据账单ID查询账单基本信息缓存

    1.1.用户账单ID 列表(userBillIdListCache)

         缓存数据类型:list;

         key规范:   userBillList:userId:billtype 

         userId:用户ID,billtype:账单类型(所有,订单收入、提现、充值...) 即有多少个账单类型就有多收个用户账单ID 列表缓存 + 用户所有账单ID 列表缓存

         value:用户账单ID(时间倒序)

         同一个用户选择不同的账单类型命中不同的账单ID列表缓存。

    1.2.账单基本信息(billCache)   

         缓存数据类型:hash; 

         key规范:   bill:billId;

         方便维护

     在接口中应用:

    1.1.分页查询用户账单列表:

    参数:userId,billtype,pageNo,pageSize

    返回值:returnList

    根据userId,billtype查询缓存userBillIdListCache

    if(null==userBillIdListCache){

      数据库查询 userBillList  (select  .... Bill_DB  where userId and billtype  order by createTime desc ;)

         缓存userBillList  :userBillIdListCache,billCache

         分页处理 returnList

         

    }

    else{//userBillIdListCache存在

          分页取 billIdList

          通过账单ID取billCache 组装 returnList

    }

    2.2.新增账单

    根据userId,billtype查询缓存userBillIdListCache 和 用户所有账单ID 列表缓存

    if(null!=userBillIdListCache){//userBillIdListCache存在

      添加新账单ID到userBillIdListCache (lpush userBillIdListCache  billId);

         缓存账单基本信息billCache;   

    }

    2.3.修改账单信息

    根据billId 查询是否存在缓存 billCache 如果存在修改 billCache 内容

     if  hexists bill:billId   

    HMSET bill:billId status 1 statusName 提现成功

    ps:对缓存操作的方法单独抽出来,这里没有单独写,根据具体情况设置缓存生命周期。

  • 相关阅读:
    win32_弹弹球游戏
    蓝桥杯评测_前n项和
    算法_fibonacci_递归求值
    PTA 分类
    _tmain() 和 main()
    VS2010 C++ 插件 VissualAssistX 安装
    vs2010 > LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    int、long、long long 的取值范围
    B树 B-树 B+树 B*树
    PTA 5-10 公路村村通 (30)
  • 原文地址:https://www.cnblogs.com/xujishou/p/6410358.html
Copyright © 2011-2022 走看看