redis应用

一直听说缓存数据库能够给我们带来很大的方便,但是一直没有机会在实际项目中进行使用,刚好前段时间项目当中有个需求,使用redis能够很好地得到解决,所以就拿redis进行了一下成功的尝试,也印证了学以致用这句名言了,哈哈。

问题描述

在我们的项目中有一个问题就是要显示最新我们抓取的网页信息,前台显示包括网页标题跟网址。考虑到前台获取数据较为频繁,并且前台获取数据需要根据时间进行倒序排列,这样子对数据库压力较大。所以想到在数据库前加一道缓存,这时候redis就华丽的出场了。

解决方案

我们在将数据保存在数据库中之后,将数据在数据库中对应的唯一主键以及网页标题和网址同时存在redis中,每次有新数据过来时,我们都会将数据在redis中保存一份,考虑到具体的业务需求以及内存大小,redis中只保存最新的1000条数据。
用redis命令就是

LPUSH latest <data>

在Java中使用Jedis,代码如下:

jedis.lpush("latest",data1);
jedis.lpush("latest",data2);
jedis.lpush("latest",data3);

其中jedis是一个具体的redis连接,latest是redis中表示最新数据的list,data1,data2,data3是保存在list中的数据,这里用JSONObject表示主键,标题以及网址。
之后将redis中的数目控制在1000以内
redis命令如下:

LTRIM latest 0 1000

Java代码:

jedis.ltrim("latest", 0, 1000);//redis只保存最新的1000条数据
jedis.lrange("latest", 0, 100);//获取最近的100条数据

当前台查询最新的数据时,会首先查询redis缓存,当获取的最新数据的条数在1000以内时,都是从redis中获取数据,并且redis中的数据也是最新的;只有当查询数据的范围超过1000时,才需要访问数据库,并且这个范围参数也是非常容易调整的,可以根据实际情况进行调整。这样做的好处是我们的系统不会像传统方式那样刷新缓存,redis中的数据永远是最新并且一致的。SQL数据库只有在用户需要“很远”的数据时才会触发查询,减小了数据库的压力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值