关于分布式缓存,有点疑问,不吝赐教

2021-01-28 23:05:56 +08:00
 orangeChu
如果网站有大数据需要缓存(最大键值可能有 10M 左右,我觉得这么大的数据都缓存,太离谱了,但是实际又需要),有什么好的分布式缓存解决方案吗?
尝试了一下 memcached,键值太大的时候,读写太慢了。没有自带的本地缓存快。
小于 1m 的读写速度倒是跟本地缓存速度几乎一样。
ps:c#开发
4678 次点击
所在节点    程序员
51 条回复
hangszhang
2021-01-28 23:16:28 +08:00
怎么可能一样, 除开读写速度之外还有序列化与网络 IO 的成本...
orangeChu
2021-01-28 23:24:19 +08:00
@hangszhang 感谢回复。哈哈,可能我测试的不太严谨,扔本地测试,确实速度相当。哈哈…
thet
2021-01-29 00:33:11 +08:00
数据不能拆开吗
eason1874
2021-01-29 01:06:36 +08:00
memcached 默认最大 1M,要手动配置才支持 1M 以上,你确定改配置支持 10M 了吗?为什么不用 Redis,现在好像分布式内存缓存都用这个。

10M 数据载入内存我觉得正常,内存够用整站载入都没问题。
laminux29
2021-01-29 02:03:29 +08:00
为什么要用分布式缓存?
orangeChu
2021-01-29 08:55:38 +08:00
@laminux29 感谢回复。因为想负载均衡,部署多个站点。缓存要一致。
orangeChu
2021-01-29 08:57:29 +08:00
@thet 感谢回复。原先用的自带缓存,直接把数据缓存。如果拆开数据,业务逻辑要调整较多,所以想先把分布式缓存用起来,后续再做业务逻辑及数据的拆分。
orangeChu
2021-01-29 09:00:35 +08:00
@eason1874 感谢回复。已经修改了配置,支持更大的键值存储。因为一开始用的自带缓存,把数据直接缓存,redis 的性能尝试了一下,在没有改变数据结构的情况下,读写性能一般,甚至还没有 memcached 优秀。
我想尽量这种大数据,直接先缓存起来,把应用先跑起来,后续对业务级数据结构再进行优化。
但是目前还没想到好的方案来处理。
melkor
2021-01-29 09:50:35 +08:00
这么大数据,不如考虑共享内存本地缓存
orangeChu
2021-01-29 11:01:01 +08:00
@melkor 感谢回复。如果站点部署在多个不同的服务器上,实现您说的想法,我需要做点什么?
Jooooooooo
2021-01-29 11:09:35 +08:00
10M 就放在本地吧
orangeChu
2021-01-29 11:21:48 +08:00
@Jooooooooo 感谢回复。但是多站点共享缓存咋解决~~~~(>_<)~~~~
Jooooooooo
2021-01-29 11:38:50 +08:00
@orangeChu 用定时推送的方法吧, 比如 2 分钟推一次. 真正用还是从本地拿.
YouLMAO
2021-01-29 12:14:14 +08:00
10m
名字叫分布式文件系统
你应该使用类似 Amazon s3 之类的系统或者协议
emSaVya
2021-01-29 12:16:59 +08:00
缓存都在 redis 按周期刷到进程内 cache 进程内使用只读不写 写更新内容走 log kafka
tailf
2021-01-29 12:23:19 +08:00
多机共享缓存也不叫“分布式缓存”,分布式指的是缓存本身是由多台机器提供的。

你这个需求单独部署一台 redis 秒解,10M 无压力。
orangeChu
2021-01-29 12:23:47 +08:00
@Jooooooooo 好想法!我会尝试一下,再次感谢。
orangeChu
2021-01-29 12:25:50 +08:00
@tailf 感谢回复。10M 如果直接序列化保存,或者用 set 保存集合,读取的时候速度太慢了。本地缓存几十 ms,redis 要几秒反序列化。
tailf
2021-01-29 12:28:16 +08:00
@orangeChu 反序列化都要几秒的话,说明数据量过大,不适合做单体缓存了。
orangeChu
2021-01-29 12:33:08 +08:00
@tailf 是的。数据量确实很大。比如把全国的区域级联数据集合都缓存起来,大概有 5w 条数据。之前都是直接放站点缓存里,倒是很快。多站点共享缓存就痛苦了。

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

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

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

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

© 2021 V2EX