用redis缓存来实现用户最近浏览的商品列表

1,最近浏览的记录肯定是需要失效时间的

确定使用缓存,缓存可以设置失效时间(最大设置为一个月,但是这已经足够了),如果使用mysql等数据库,还需要定时任务清除,很明显是不切合实际的,

2,最近浏览的记录肯定是有个数限制的,不可能记录所有的浏览记录

目前使用的主流缓存有 memached和redis两种(原谅无知的我并不清楚其他的),redis有LTRM来修剪,保证存储的浏览的条数;

3,我们需要在哪里添加保存浏览商品的方法

用户最近浏览的商品,肯定是再用户最近打开商品详情页的时候才算浏览,这点毋庸置疑;

4,怎么保证每次添加的浏览的商品列表按着浏览的先后顺序排序?

每次用户的浏览商品的ID,可以以用户的ID作为key,以List作为value,储存在redis中,而List是有序的,而且,在使用LRANGE的时候能保证先进后出,后进先出的原则,已达到排列在最前面的商品始终是里当前最近浏览的那个商品;

5,怎么保证用户在连续浏览同一个商品的时候,不会重复保存商品?

可以使用redis中LREM来移除列表中与参数 value(该商品ID) 相等的元素。同时在使用Lpush重新再List插入最新的浏览商品;

6,读取缓存的时候,又该如何保证分页?

redis中的LRANGE可以指定获取指定长度的元素,能够满足需要;

redis 了 什么地方用到_项目中redis使用场景相关推荐

  1. 项目使用了redis还需要mysql_【11-05】lnmp项目中Redis和Mysql配合使用应该注意哪些问题?...

    [今日话题] lnmp项目中Redis和Mysql配合使用应该注意哪些问题? - 刺客 1. 我这边因为项目小,主要用redis充当mysql的缓存使用,把活跃数据预读到redis中,这样绝大部分的请 ...

  2. redis 了 什么地方用到_细节拉满!美团首推“百万级”Redis进阶笔记究竟有什么魅力...

    Redis 相信大家现在项目里面都会用到一个技术--Redis.毫不夸张的说Redis作为现在最受欢迎的NoSQL数据库之一,不管是项目还是面试都会有所涉及!我们都知道在项目中使用redis,无非是从 ...

  3. redis php高级使用_项目中应用Redis+Php的场景

    前言 一些案例中有的同学说为什么不可以用string类型,string类型完全可以实现呀 我建议你看下我的专栏文章<Redis高级用法>,里面介绍了用hash类型的好处 商品维度计数 对商 ...

  4. springboot项目中redis客户端(Jedis、Lettuce、Redisson)

    一.redis客户端的对比 1).Jedis Jedis作为Redis官方推荐的一款客户端,也算是简单好用,基础功能齐全,在中小型项目中还是很好用的,但是Jedis是直连模式,在多个线程间共享一个Je ...

  5. ssm把图片保存到项目中_项目中的图片跨域问题解决方式

    现象 首先,在生产环境中,由于进行编辑图片时,将图片回显到ReactCrop组件中进行可裁剪编辑,然而回显时,需要将图片转化为base64的格式或者blob对象, 此时需要将图片次绘制成canvas进 ...

  6. 读写分离怎么实现_项目中如何实现读写分离?怎么配置?

    上篇文章中,在两个 windows 系统的电脑上安装了最新版 8.0.21 MySQL 数据库,并且配置了主从.MySQL如何配置读写分离? 主从复制的原理思想也很简单,就是从库不断地同步主库的改动, ...

  7. 项目中使用粘性布局不起作用_项目中的 Git 使用规范

    祖师爷 Linus 在创造了伟大的 Linux 之后,又创造了应用最广泛的代码管理工具 -- Git,极大地提高了程序员的生产力. 现如今大部分项目都在使用 Git 作为代码管理工具,不论是在代码管理 ...

  8. 关于mysql的项目_项目中常用的MySQL 优化

    本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下: 一.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单的示例,标注(1.2.3.4.5)我 ...

  9. Java 并发在项目中的使用场景

    1.并发编程的三个核心问题: (1)分工:所谓分工指的是如何高效地拆解任务并分配给线程 (2)同步:而同步指的是线程之间如何协作 (3)互斥:互斥则是保证同一时刻只允许一个线程访问共享资源 (4)应用 ...

最新文章

  1. 矩阵的终极分解-奇异值分解 SVD
  2. [官方摘要]Setup And Configuration memcached with Tomcat
  3. Deepin15.7 Android8.1 编译 以及问题解决
  4. How to Secure Your Smart Contracts: 6 Solidity Vulnerabilities and how to avoid them (Part 1)
  5. 【算法竞赛学习】金融风控之贷款违约预测-数据分析
  6. superviseddescent (SDM C++11实现)环境配置
  7. android嵌入式面试题,嵌入式软件面试题 经典笔试题(含答案)
  8. forEach for 循环
  9. Android源码分析之 JobScheduler
  10. #includeiostream与#includeiostream.h的区别
  11. 一个桌面系统的微信公众号开发
  12. 利用反射来实现动态代理
  13. SVN安装与使用教程
  14. Adobe Flash 离线安装包下载
  15. 状压DP入门——玉米田
  16. 软件的静态测试和动态测试【软件测试分类】
  17. java实现最大公约数
  18. [IMX6Q]fastboot下载u-boot.bin失败提示太大原因
  19. 大神爆料:红米K30S至尊纪念版和红米10XPro哪个好-哪个更值得入手-参数对比
  20. java用数组存放账号密码_从零自学Java-7.使用数组存储信息

热门文章

  1. 微信小程序 webview mp4视频 在ios无法播放 安卓和谷歌浏览器正常
  2. 小米一元流量magisk_薅不了羊毛了?小米一元流量业务即将停止运营
  3. 电网经济和频率控制的多层,多时间尺度模型方法 Julia源代码,本文提出了一个覆盖所有控制时间尺度的多路动态网络模型 代码按照高水平文章复现
  4. 蓝牙(二)蓝牙搜索、配对、连接
  5. MPO跳线中公头与母头的区别
  6. python3+PyQt5 实现文档打印功能
  7. 美丽的植树图案(阿拉伯数字王国的生日图案)
  8. iOS设置某个界面强制横屏,进入就横屏
  9. MATLAB之极坐标绘图
  10. Windows10,夜间模式失效?