永发信息网

Redis存储文章点击量,string类型和hash类型用哪种比较好

答案:1  悬赏:60  手机版
解决时间 2021-03-23 16:01
Redis存储文章点击量,string类型和hash类型用哪种比较好
最佳答案
如果只是通过文章id进行点击量的存取和自增操作的话,string涉及的操作有set,get和incr。hash涉及到的操作有hget,hset,hincr操作。这些操作的时间复杂度都是O(1)的,所以不用太担心存取性能,反而大量string相较于hash来说要更加浪费内存,所以推荐使用hash。一次查询多个文章id的话,hmget相对于mget也要有优势(例如Jedis客户端分片,多个节点的话,不同的key可能存放在不同的节点中,无法直接用mget,只能用管道查询)。

不过如果只是以上这些操作的话,不明白题主为什么要把访问量单独存储到一个hash中,完全可以通过存成以文章为主体的结构,例如:
key = article:1
fields = like_count, view_count, comment_count
values = 10, 10, 10

如果真的必须将所有访问量存放在同一个hash的话,有可能是为了方便持久化到数据库。也就是先通过redis进行自增,然后定时将数据从redis同步到mysql中,避免mysql的并发和锁问题。这样的话就需要知道在这一时间段哪些文章的访问量发生了改变,然后进行update的操作,才需要将访问量和文章id单独存放在hash中。例如:
key = view_count_hash
fields = article:1, article:2. article:3
values = 5, 10, 20

这时就需要想办法避免在fields比较多的时候,hkeys占用较长的时间,可以通过将用户id取模分片,存储在不同的hash中,或是减少同步的间隔时间,并在间隔后删掉对应的fields。

如果题主不需要这样做的话,还是建议分开存放在以文章为主体的结构中。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何在床上判断她是不是处女
名著经典段落摘抄英语,英文名著中的经典句子
1992年农历2月15早上9:20出生的运势
honey-bunny是什么意思啊!
121236301交通违章短信是不是骗人
某元素的原子结构示意图为则该元素原子质子数
新蜀门绑定的装备不想要了怎么办啊
五合杂粮混在一起能打成面粉吗?
粽叶能煮茶喝吗?
华为play如何分辨真
生死狙击人机对战怎么玩 人机对战玩法介绍
宾阳到湛江有多少公里,湛江开车到江门要多少
右前轮护板刮变形了修理需要多少钱
如图,把△ABC绕点C顺时针旋转25°,得到△A
梦里水乡(陶笛版)
推荐资讯
侠客风云传1.6傲天神剑怎么打造
南孚电池有保质期七年的吗
星际手柄和宏大主机(300w)连接线怎么配能用
收房注意事项?
梦妆防晒霜多少钱?
科学记数法 0.5X10^3等于多少
对朋友表示歉意的话语
1929美国经济危机纽约股票市场崩盘之后钱都到
肝功能检查报告生成时间
黄面的汤汁是怎么调的啊
第一张是16号监测卵泡有优势卵泡,第二张是19
推荐下什么牌子的水乳霜三件套好用 (主要补
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?