最近项目要求分页展示用户账单列表,为提高响应使用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:对缓存操作的方法单独抽出来,这里没有单独写,根据具体情况设置缓存生命周期。

redis 缓存用户账单策略的更多相关文章

  1. Redis缓存策略设计及常见问题

    Redis缓存设计及常见问题 缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日常应用的开发至关重要.下面会介绍缓存使用技巧和设计方案,包含如下内容:缓存的收益和成本分析.缓存更新策略的选 ...

  2. redis 缓存策略

    redis 缓存策略配置项:maxmemory <bytes>maxmemory-policy noeviction 触发时机:每次执行命令(processCommand)的时候会检测 w ...

  3. Redis缓存Mysql模拟用户登录Java实现实例[www]

    Redis缓存Mysql模拟用户登录Java实现实例 https://jingyan.baidu.com/article/09ea3ede1dd0f0c0aede3938.html redis+mys ...

  4. 转:Redis 缓存策略

    转:http://api.crap.cn/index.do#/web/article/detail/web/ARTICLE/7754a002-6400-442d-8dc8-e76e72d948ac 目 ...

  5. [技术博客] 用户验证码验证机制---redis缓存数据库的使用

    目录 问题引入 初识redis 实际应用 作者:马振亚 问题引入 在这次的开发过程中,我们的需求中有一个是普通用户可以通过特定的机制申请成为社长.因为只有部分人才能验证成功,所以这个最开始想了两种思路 ...

  6. mysql+redis缓存策略常见的错误

    什么时候应该更新缓存 应该是从数据库读取数据后,再更新缓存,从缓存读取到数据,就不需要再重新写缓存了,一个常见的错误是,每次访问接口都更新缓存,这样的话,如果接口一直有流量,那么db中的数据,就一直没 ...

  7. 【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题

    问题描述 由于Azure Redis的性能在不同级别表现不同,当需要升级/缩放Redis的时候,从使用者的角度,需要知道有那些步骤? 注意事项? 潜在影响?停机事件窗口? 升级预估时间? 解决方案 从 ...

  8. Spring Boot 使用Redis缓存

    本文示例源码,请看这里 Spring Cache的官方文档,请看这里 缓存存储 Spring 提供了很多缓存管理器,例如: SimpleCacheManager EhCacheCacheManager ...

  9. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 简介 这是一篇关于Redis使用的总结类型文章,会先简单的谈一下缓存 ...

随机推荐

  1. 【转】给TD添加滚动条的方法

    TD本身不允许出现滚动条,而会总动撑大,所以要想加滚动条需要另外在TD内添加一个容器如:DIV. 例子: <table style="width: 450px; height: 360 ...

  2. Codeforces-20152016-northwestern-european-regional-contest-nwerc-A题

    一.题目 二.题意 (1)一开始理解成:它最多需要开多少台电脑.同时,我又有个疑问,既然是最多需要开多少台,那不变成了总共有几个人开几台是最大的结果.然后,WA了无数发.直到比赛结束......其实说 ...

  3. 优化笔记:pfyhparopenfundinfotest_D_20140916.gz

    性能瓶颈在函数的乱用.原代码黄色部分. 12分钟->35秒 ------------------------------------------------------------------- ...

  4. IDA Pro 权威指南学习笔记(十二) - IDA 中的注释

    注释有助于以一种更高级的方式描述汇编语言指令序列 IDA 提供了几种不同类型的注释,每种注释适用于不同的目的 使用 Edit -> Comments 命令的选项,可以为反汇编代码清单中的任何一行 ...

  5. Defining Python Source Code Encodings

    Defining the Encoding Python will default to ASCII as standard encoding if no other encoding hints a ...

  6. 初识python(python的安装与运行)

    python--“优雅”.“明确”.“简单”的哲学定位 一.python的安装(Windows环境下) 1.在python官网下载安装文件 python的官方网址:https://www.python ...

  7. ConcurrentHashMap放入null值报错

    //ConcurrentHashMap源码: /** Implementation for put and putIfAbsent */ final V putVal(K key, V value, ...

  8. linux日志查询技巧

    问题描述: 18803959896用户反馈,通讯录备份失败,提示“身份验证失败,请注销账号后重新登录”,不管用账号密码登录还是一键登录,都是提示这个.请协助查询.谢谢~ 备注:三星note3最新版本彩 ...

  9. Flask之模板之特殊变量和方法

    3.6 Flask中的特殊变量和方法: 在Flask中,有一些特殊的变量和方法是可以在模板文件中直接访问的. config 对象: config 对象就是Flask的config对象,也就是 app. ...

  10. 流媒体协议部分RTP、RTCP、RTSP、MMS、HLS、HTTP progressive streaming

    流媒体协议:(RTP.RTCP.RTSP.MMS.HLS.HTTP progressive streaming) 当前在internet上传送音频和视频等信息主要有两种方式: 下载,完整下载一个视频, ...