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:对缓存操作的方法单独抽出来,这里没有单独写,根据具体情况设置缓存生命周期。

  • 相关阅读:
    操作系统和程序设计语言的API使用的字符编码分析
    struct与union字节大小的终极解释
    c++中的一些容易混淆的研究
    c++程序员必知的几个库
    UnityGUI扩展实例:图片挖洞效果 Mask的反向实现
    how to combine jpg + separate alpha in png?
    unity 全屏乱影 BlitMultiTap
    Unity Shader Billboard
    Unity Shaders Vertex & Fragment Shader入门
    Unity3d三大光照渲染介绍
  • 原文地址:https://www.cnblogs.com/xujishou/p/6410358.html
Copyright © 2011-2022 走看看