专业编程基础技术教程

网站首页 > 基础教程 正文

编程中非常小又容易犯的错误(四)

ccvgpt 2024-08-08 13:07:30 基础教程 11 ℃

接触过数据库的同学,想必都有听过或者用过Redis这个K-V数据库。今天我们来聊下Redis中容易犯的错误。

通常我们在做排行榜的时候,会使用Redis里的zset数据结构,让Redis帮我们完成排序,可以节省了很多开发工作。但是在取数据的时候我们就容易犯错。

编程中非常小又容易犯的错误(四)

假设现在Redis里存储了一个排行榜如下。键名为c。包含以下数据。

因为Redis已经帮我们排好序,我们只需调用zRevRank(key,member)即可拿到member在key中按照分数从大到小的排名。

从上面我们可以看出,rank是从0开始,所以往往大家都会这样写

redis->zRevRank(key,member)+1;

如果你这样写,你还活着的话赶紧买张火车票跑吧,站票也行。

因为如果用户进入了这个排行榜,这样的用户没错,但是如果用户没进入排行榜的时候,redis->zRevRank(key,member)取出来的结果是null,再加1的话,程序会把null转换成整形0,去加1得到的结果就是1。那么不在排行榜的人的名词都是第一名。天呐,想想都有点激动了。那么正确写法是怎样的?欢迎在评论区讨论。


Tags:

最近发表
标签列表