Redis 到底应该怎么存储使用?

2021-11-05 14:29:36 +08:00
 chengouzi

问这个是因为我们公司目前的方法 我觉得挺不妥的 然后我也没有接触过别的公司或者并发比较大的系统中如何存储以及如何读取 redis

使用 redisson 连接的 redis(哨兵)

目前是存人群信息, 分了 1000 个 key (redis 中 key 如果很多的话会有问题么)

1000 个 key 的 value 是 一个大 Map ,存取这个 map 用的是 getLocalCachedMap

map 的每个 key 对应一个人 value 就是他的数据(数据量肯定不大 几百 k 吧)

然后业务集群每天大概请求在 40 -50 亿 然后峰值是 70 亿(其中也会过滤一些请求 比如不合法的或者各种过滤条件过滤掉),剩下的基本每次请求都会去请求一下 Redis 拿用户数据

这样一个 map 的话就会存多个人群数据 这样子维护的话 不会混乱么 比如有的人更新了有的人数据没更新

大家有做过类似的这种 redis 数据维护么 我也想了解了解

7689 次点击
所在节点    Redis
73 条回复
chengouzi
2021-11-05 18:03:58 +08:00
晚上我看看对应的类型.... 之前的版本是 redis 一个人存一个 key 貌似 redis 总是挂
可能还是请求 redis 的量太大了
e7
2021-11-05 18:06:44 +08:00
好像最新的 redis 支持客户端缓存了
chengouzi
2021-11-05 18:08:52 +08:00
统一回复一下 做的是广告业务 小公司而已 70 亿说的是十一月一号 的请求量 ,请求量不等于用户量....
nekochyan
2021-11-05 18:11:03 +08:00
同意 39 楼,楼主应该说的是查询次数有 70 亿,我们游戏后端就是,一个前端请求可能调用几十次 redis
chengouzi
2021-11-05 18:16:50 +08:00
@peyppicp 按 key 用的 hash 拆分....
mmuggle
2021-11-05 18:25:28 +08:00
key 还是一人一个比较好,聚合在一起更能造成 big key 和 hot key 。请求量大,可以根据业务来看是否可以做二级缓存,以及是否可以提升为 localcache
cassyfar
2021-11-05 18:33:44 +08:00
一人一 key 理论上会减轻单一 node 的压力(特别是你有频繁访问的大 key )
RedisMasterNode
2021-11-05 18:43:48 +08:00
@2i2Re2PLMaDnghL 再考虑白天和晚上,高峰和低谷的请求体量差异,很可能白天每秒超过 30w 请求。。 峰值可能能超过 100w 请求 /秒

有一说一这种 case 没有团队讨论和经验积累,还是安静听大佬说话比较好哈哈哈
glfpes
2021-11-05 18:48:55 +08:00
8 万 qps 的缓存访问而已。。。一个用户请求触发几十个缓存访问的场景也不少啊

不要大惊小怪
GoopleXD
2021-11-05 18:57:13 +08:00
请求量是 70 亿?
人群标识的量级估计 1 亿的量级?
不知道存的是啥东西,不过广告业务很多环节都是用布隆过滤器来做
chippai
2021-11-05 19:19:31 +08:00
场景:新老客判定
QPS:峰值 20W+
Redis 配置:cluster 、16 * 16g 、double
毫无压力
Huelse
2021-11-05 20:15:21 +08:00
具体没做过,但这个量级我能想到的就是增加增强硬件和简化过程
iyaozhen
2021-11-05 20:54:31 +08:00
突然想到一个问题 面试经常考的这个还是有场景呀,现在真的造火箭感觉又不会了
hallDrawnel
2021-11-05 21:20:37 +08:00
1000 个 Key 不算多,我们一个服务的 key 数量随便就几百万了。不懂你们上层业务逻辑,但是这样用也没啥问题。

比较好奇的是为什么要拆分固定的 1000 个 key ?意思是分为固定的 1000 个人群?
lysS
2021-11-05 22:01:59 +08:00
70 亿 Bytes/s 既 64GB/。。。。。不是我不信
jakezh
2021-11-05 22:09:54 +08:00
没明白问题是什么
我们公司 200 个 pod , 每个 32GB
请求没下过 20 亿,从来没出过大问题
raycool
2021-11-05 22:42:36 +08:00
这是做 RTA 广告么
alexzz117
2021-11-05 23:13:18 +08:00
哪有这么干的,reids 存几十亿个 key 都没问题,完全没必要用一个 key 存一个大 map
读取效率低,而更新修改还麻烦,有一致性问题
makdon
2021-11-05 23:55:01 +08:00
同做过广告业务,10w+ 级别地 QPS ,用腾讯云的 tendis 就可以直接扛住了, 每个用户一个 kv ,value 当时是纯 protobuff marshal 后的二进制值,每个 kv 加起来不到 KB 级别
dayeye2006199
2021-11-06 01:49:05 +08:00
这个不是 sharding 么。大致是 map 套 map 的搞法。但这个一般是处理多机的问题把,一级查询返回 下一步去哪个机器上查。第二部去那台机器上把真正的值取出来。

单机这么弄是不是有点没必要,还增加了一些管理上的难度

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/813275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX