thinkjs——redis

前言:

后台某些操作的时候会用到缓存:比如用户登录或者校验次数的情景。而本次遇见的状况就是在点击“推送”按钮的时候,需要判断缓存中是否有其值,并将其次数限制为固定值。

过程:

刚听到此需求的时候,首先想到的是将这个次数写在session中,于是想了很久,便写出了下面的代码:

1

实现思路:取日期YYYY-MM-DD格式的数字存在session中,并通过取其值比较与配置(config)文件中设置的最大推送次数作比较,若小于最大次数,则给其值++,否则提示超出次数限制。可是在自测的时候,却发现了一个问题:这样写在session中的,如果出现用户退出登录的情况下,那它的缓存就会丢掉,也就意味着我们的这个设置并不会起任何作用。

可是自己反复看了很久,都不晓得怎样操作这样的业务。最后在老大的指点下,才找出来问题出在哪里了……

-------------------------------------------------------------------------

在thinkjs中,有直接操作redis的方法,而并非是自己之前所想的只能在session中设置或者取redis。

2

具体的实现思路:

...
  // -------------获取缓存 格式为2017-03-20-----------
        let newDate = new Date().getFullYear()+"-"+(new Date().getMonth()+1)+"-"+new Date().getDate();
        let countValue =await think.cache(newDate, undefined, {type: 'redis'});
        if(countValue){//有key值
            if(countValue >= this.config('sendatricleMaxcount')){
                return this.success('今日文章推送共为'+countValue+'次,已达上限!')
            }else{
                await think.cache(newDate, ++countValue);
            }
        }else{//无key值
            await think.cache(newDate, 1);
        }
...

在这里,再附上之前写在session中的方法:

1

后者淘汰的原因:在用户进行退出操作时u,session会全清,这样上面再去countValue就不能得到了。

后言:

之后认真学习关于缓存的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值