换乐网redis应用分析

news/2024/11/24 5:45:30/

没听过换乐网?没错,它在我的电脑里

用法用途

在项目中,redis主要用作缓存。而在作为缓存,意义最大的是缓存计算结果,因为有些计算是一个很耗时间和资源的过程,而计算的结果不会经常改变,这时使用redis将结果缓存起来就非常有用。

缓存计算结果

在项目中有个需求:显示一个类目下的所有商品,分类可以是最终类目,也可以不是。比如,显示“生活用品”类目下的商品,需要显示出“洗漱用品”,“餐具”,“雨伞”等等所有子类目下的商品。

这个操作近似于遍历树,有一个递归查询的过程:找到“洗漱用品”等直接子类,如果这些子类不是最终类目,继续向下查询。

这个计算过程很耗资源,而且经常需要用到其计算结果,所以,放在redis里面缓存起来:

Created with Raphaël 2.1.0 开始 redis有缓存? 返回结果 结束 计算结果 yes no

对于缓存的更新,想到三种方案:
(1)每次修改数据库的相关数据时,顺便更新redis里面的数据。
(2)设置缓存的过期时间,这样在某些情况下可以达到自动更新缓存的效果,但不是什么情况下都可用,一般如果缓存只用作显示的话,这样做也无妨。
(3)或者设置一个更改标记,每次修改了相关数据就把更改这个标记。这个标记的管理参看下部分“key管理”

缓存对象

缓存对象一般缓存:
(1)使用频率很高的对象,比如当前用户,几乎每个页面都要使用到。
(2)临时对象。比如验证码。

项目中有个需求:用户可以使用短信验证码登录,验证码60s内只能发一次,一天内同一个用户最多发送20条,验证码5分钟内输入有效。

这里,要达到限制每个用户发送条数的效果,就必须记录用户发送的次数和ip地址,这种数据用一个表或文档来存显得太笨重了,而放在redis中则十分方便。

在项目中,保存对象一般使用json,应为对象是单一的,而且保存为字符串的话可以设置过期时间。

作为计数器

作为计数器则redis是用得很多的一个方面。比如说上面的发短信验证码的需求,可以用一个计数器来限制用户60S内只能发一条短信验证码,用另外一个计数器来限制用户验证码2分钟内有效。

key管理

根据某一条原则:key应该集中管理。

集中管理的好处就是使用方便,结果一致,当需要某个key时,直接找管理者拿就好了,不管调用多少次,得到的key的值都是一样的。总之,key统一管理是一个不错的选择。

在项目中,对于用户保存在redis中的数据,都定义一个key helper类来管理:

商品类目的redis缓存结果key管理者:

public class RedisGoodsClassEntity {private static final String subscritionPrefix="SUBGOODSCLASS_"; /** 获得存储该类下的所有final子类的json对象的redis key* @param classNo 类目编号* @return redis key*/public static String getSubClassListKey(int classNo){return subscritionPrefix+classNo;}}

用户的redis缓存结果key管理者:

package com.huanle.model.session;public class RedisUserEntity {private static final String subscritionPrefix="SCRT_";  //订阅信息的前缀/** 获得用户订阅在redis的缓存的key* @param ip* @return 用户订阅在redis的缓存的key*/public static String getSubscritionKeyByIp(String ip){ip = ip.replace(".", "_");System.out.println(subscritionPrefix+ip);return subscritionPrefix+ip;}/** 获得用户订阅在redis的缓存的key* @param ip* @return 用户订阅在redis的缓存的key*/public static String getSubscritionKeyByAccount(String account){System.out.println(subscritionPrefix+account);return subscritionPrefix+account;}}

http://www.ppmy.cn/news/857175.html

相关文章

【力扣算法09】之 6. N 字形变换 python

文章目录 问题描述示例1示例2示例3提示 思路分析代码分析完整代码详细分析运行效果截图调用示例运行结果 完结 问题描述 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&…

linux搭建乐网服务器,教你linux搭建web服务器

在我本机配置时间不长,不过花了好长的时间写了份配置文档,和大家分享一下,希望对大家有用 LINUX发行版本:Fedora 14 , Apache .2.2 安装就不说了!依然采用rpm包安装方式 ,下面进入正题: httpd.conf配置文件…

我乐网关停1月套牢2亿风投

基本死了,除非他们有无限的资本.” 国内前三大视频网站之一的我乐网(www.56.com)自6月4日起关停,到今天已经已整整1个月了.公司的解释是 “正在对所有视频数据进行维护,并对系统进行大规模升级”. 但多位视频网站业内人士告诉记者,长达1个月的“关停”是因为其对视频内容监管…

[爆料]有消息人士表示我乐网确实收到了有关部门的处罚通知

中新浙江网6月20日电 “我乐网正在对所有视频数据进行维护,并对系统进行大规模升级。由于数据量庞大,需要一定时间,请广大用户原谅。 这是视频分享网站我乐网的首页公告。从6月4日关站,到6月9日发布“迟到”的公告,…

选购螺杆支撑座要考虑哪些因素?

为了可以保证螺杆支撑座的使用效果,同时也能够发挥出更好的使用功能,避免出现各种质量隐患,建议大家在购买的时候一定要在专业正规的厂家进行选购,那么,我们在选购的时候要考虑哪些方面的因素呢? 1、考虑到…

Python爬虫学习笔记(一)————网页基础

目录 1.网页的组成 2.HTML (1)标签 (2)比较重要且常用的标签: ①列表标签 ②超链接标签 (a标签) ③img标签:用于渲染,图片资源的标签 ④div标签和span标签 &…

彗星来的那一夜 Coherence Bt种子下载地址

彗星来的那一夜 Coherence Bt种子下载地址(点击查看:如何下载本站BT种子?)(网盘广告太多的解决办法): http://www.colafile.com/file/6975509(彗星来的那一夜BD中英双字1024高清 www.xro.pw 首发…

彗星HTTP操作支持库 - 易语言支持库

支持库信息支持库名称:彗星HTTP操作支持库支持库版本:1.60 (更新时间20161123)支持库下载:http://www.it608.com/down/CometHTTP.zipQQ群交流:群号42691133 支持库命令: HTTP操作编码转换其他彗星HTTP读文件彗星URL编码彗星GZIP压缩 彗星HTTP读文本彗星URL解码彗星GZIP解压…