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

  • 相关阅读:
    xpath语法速查
    负载均衡设计
    Nginx负载均衡配置实例详解
    实现基于DNS的负载均衡
    建立双线服务器(双线游戏服务器)
    python学习
    python多线程概念
    python 多线程就这么简单(续)
    打包一沓开源的 C/C++ 包管理工具送给你!
    讲解开源项目:功能强大的 JS 文件上传库
  • 原文地址:https://www.cnblogs.com/xujishou/p/6410358.html
Copyright © 2020-2023  润新知