redis操作问题
发布于 7 年前 作者 quanpf2481 2374 次浏览 来自 问答

项目上遇到这样的问题:用nodejs操作redis,需要对redis里面存储的数据,某个key的value值进行某个字段的统计操作(存储的类型是Hash),看了网上说,redis不适合做统计操作,如果我真要用的话,应该怎么做呢??求大神指点

4 回复

redis大多数主要用途还是做缓存吧。 存的是hash非要统计的话可以全部取出来求和。 或者单独存一个key(或者也就存在你的这个hash的key里,field单独给一个特殊的值)用来存数量,每次往你的hash里set的时候更新一下统计key的数量。redis有原子计数,所以更新计数上面不用担心。

@imhered 感谢感谢,还有个问题,举个例子来说,比如说redis里面,key名为student下的有 name1:1 age:20 score:91 name2:2 age:21 score:91 name3:3 age:20 score:93 name4:4 age:22 score:90 name5:5 age:19 score:95 name6:6 age:20 score:89 name7:7 age:20 score:90 name8:8 age:22 score:91 name9:9 age:20 score:90 … 这样的value值若干条,我如果想要统计age=20的个数,怎么样做呢???

@quanpf2481 这个用redis估计只能把数据全取出来一个一个加了把? name1:1 这个是field, age:20 score:91 这个是value对吧,这个value存的是json字符串对吧? 我能想到的估计只能全部取出来一个个筛了。 这种需求还是放关系型数据里吧,简单多了

@quanpf2481 还有一个做法就是我前面说的。另起一个hash key,里面用来存你各个age人数,你在往student里set数据的时候同时更新统计key里对应的数据,但你这既然有按age统计,估计就有按score统计了把。。。还是放关系型数据库吧

回到顶部