其实我心里大概是有一个答案的,就是怕断电丢 5 分钟左右的数据?
如果不考虑断电的情况呢,因为阿里云腾讯云我用了好多年都没遇到过断电,而且就丢失 5 分钟,概率上还没有中勒索病毒大。
其他的我暂时也想不到什么坏处,顶多是逻辑要自己写,大表拆分起来要动动脑。
好处不用说了,速度起飞,内存占用低。
所以还是想请教一下各位大佬,到底有没有可行性
1
kiracyan 2020-06-28 14:58:38 +08:00
本来就可以这样做 只不过看你能承担的风险是多少而已
|
2
Jooooooooo 2020-06-28 15:01:09 +08:00
运维过好几 T 的 redis 集群?
|
3
monsterxx03 2020-06-28 15:02:12 +08:00 via Android
你的数据库大小不能超过机器内存喽,开了 aof 也就丢一秒,还有 redis 那个事务不堪用
|
4
pastgift 2020-06-28 15:04:49 +08:00 via iPhone
怎么会内存占用低呢? redis 的内存也是内存呀
比如正常 mysql 里存了 10 个 G 数据,换 redis 岂不是要 10 个 G 内存? 你真的只考虑数据全内存里读写,sqlite 放内存,或者 mysql 内存表,加个定时刷到硬盘不就行了 |
5
takemeaway 2020-06-28 15:06:42 +08:00
哪来的丢 5 分钟? 可以不丢的。 就是看你内存够不够。
|
6
luckyrayyy 2020-06-28 15:06:44 +08:00
不光断电,硬件坏掉的问题?进程挂掉?系统意外死了?另外备份也不是五分钟吧,你完全可以调更低。要是丢数据对你来说完全不重要,那当然只用 redis
|
7
GM 2020-06-28 15:07:31 +08:00
看你是用来干嘛的了,个人网站随意。
公司正式用途的,别瞎想。 |
8
vivipure 2020-06-28 15:11:37 +08:00 2
数据库只是一种方式,你用个 json 或者 txt 文件存数据也没问题啊,只是效率问题。
|
9
lshero 2020-06-28 15:36:06 +08:00
对运维的要求挺高的,之前的公司大部分项目就是 Redis
所有的 Redis 实例每一次存取都有监控 阻塞操作热点 key 之类的问题过一会儿就可以反馈给业务部门 DBA 对 RDB 文件解析恢复使用的贼溜 |
10
xuanbg 2020-06-28 15:39:19 +08:00
楼主说的速度起飞,大概就是 30 毫秒的响应时间变成 3 毫秒。这点提升其实体验并没有那么明细,所以根本不重要。
|
11
realpg 2020-06-28 15:39:47 +08:00
会很爽
技术实力不够,就会很酸爽 |
12
zzzmh OP 多谢回答,了解了,先开个虚拟机试试水好了。redis 一直也就作为缓存在用,之前没有足够的深入了解。
|
14
est 2020-06-28 15:53:38 +08:00 3
|
15
liuguang 2020-06-28 15:59:31 +08:00
小数据量可以用用,海量数据的时候内存限制了
|
16
swulling 2020-06-28 16:00:51 +08:00 via iPhone
redis 主从配好 断电也只损失同步延迟内的数据
|
17
lshero 2020-06-28 16:01:42 +08:00
@defunct9 自己搞了个代理呗,把分片监控的问题都解决了,然而代理的可用性又是下一个问题了。
不过业务都允许用 RDB 恢复数据了代理的高可用性也没有这么重要了。 |
18
jifengg 2020-06-28 16:17:34 +08:00
redis 不是“关系型”数据库,所以有“关系型”的业务的时候,只用 redis 来存数据读数据,不管是开发还是运行其实都不是很好。开发就不用说了,可能需要在存的时候就存很多对应关系。读的时候,需要读好几次才能读完你要的数据。所以,还是看具体需求了。
没有什么“关系型”业务的,很适合,比如上面说的博客。 像一般的什么管理系统,就不太适合。 |
19
yinjunjian0 2020-06-28 17:45:20 +08:00
脱离场景没什么好讨论的吧
|
20
DreamH 2020-06-28 18:28:20 +08:00
陌陌一直都是用 redis 当数据库,主要是操作方便,抗量简单
|
22
arloor 2020-06-28 18:59:39 +08:00 via Android
nodebb
|
23
ClarkAbe 2020-06-28 19:06:44 +08:00 via iPhone
之前用 Golang 嵌入式纯 kv 数据库写了个漫画网站....从推荐到分类,用户模块到记录每一次访问者信息都 ok......不过推荐那些最好别即时....而且查找什么的由于对算法实在头疼也没什么算法就是把数据分(数据总数 /5-10)份然后每一份一个 goroutine 暴力遍历因为用的是 json 的原因所以要转 map 不过我在转 map 前先让他匹配一下是否包含要查找的 value 所以速度超快......当然数据量到 n 亿条了就........
就是架构挺麻烦.....一共搞了 10 个架构然后一个个实现再一个个测试性能大概用了一个季度......写完差不多就半年过后了 |
24
ClarkAbe 2020-06-28 19:09:01 +08:00 via iPhone
跑起来后日活 ip 2000 左右,内存占用 130M-300M 左右根据 goroutine 的数量变化
vultr 最低配鸡稳定跑到现在还跑着 |
25
emanci 2020-06-28 19:09:52 +08:00
会这样?当然是费钱了。
|
26
dobelee 2020-06-28 19:10:04 +08:00 via iPhone
存储成本剧增,不方便复杂查询,维护成本高。别的跟数据库一样。
|
27
LukeChien 2020-06-28 19:23:31 +08:00 via Android
ssdb 可以试试
|
28
qwerthhusn 2020-06-28 20:01:13 +08:00
这得看是什么网站
|
29
murmur 2020-06-28 20:03:47 +08:00
不需要持久化么? redis 的持久化跟传统 mysql 这些比呢
|
30
liaokylin2v 2020-06-28 20:43:31 +08:00 via Android
应用场景合理就可以,有啥问题
|
31
pmispig 2020-06-28 21:17:12 +08:00
你不如把 mysql 的表文件放到内存,自己写个内存文件系统定时 sync 到磁盘
|
32
wangyzj 2020-06-28 22:09:28 +08:00
内存贵
|
33
Nicoco 2020-06-28 22:10:02 +08:00
CSDN 曾经搞过去 SQL 化,全站上 xml 的。
结果呢? |
34
lihongming 2020-06-28 22:57:58 +08:00 via iPhone
别被复杂查询吓到,即使是 amazon,也只有百分之十几的查询是关系型查询,其他都可以用 nosql 。
为了这百分之十几的查询而降低那百分之八十多查询的效率不值,所以 amazon 转向了 dynamodb 至于复杂的那一小部分,用程序拼凑就好。 |
35
lithbitren 2020-06-28 23:22:05 +08:00
在知乎上看到好像有公司是真的堆 redis 做数据存储的,就是太费钱,不过老板喜欢,其他暂时没有太严重的问题。
不过也就看过这么一例,也不知道是不是编的,网上绝大多数碰到这个问题的都是劝退,也几乎没人敢尝试放在业务上。 |
36
594duck 2020-06-29 08:11:18 +08:00 1
丁香园的 CTO feng 大用 redis 做底层,结果事后大家都知道了。
不要老想搞个大新闻 ,什么 IOT 替代计划。真的商业数据库能力甩 MYSQL 一百条马路,除了穷没有不用的道理。而至于 Redis,他只是个 KV,KV 就只干 KV 的活,任何的想象都是犯罪。 |
37
P0P 2020-06-29 10:54:11 +08:00
要是想用简单的关系型数据库的话,sqlite 也是不错的,可以运行在纯内存模式或者基于文件模式, pv 不高的话很好用
|
38
heiheidewo 2020-06-29 13:02:38 +08:00
kv 一把梭哈(可以用 leveldb 省内存),关系数据全部读到内存处理
|
39
zzzmh OP @heiheidewo 刚了解了一下 leveldb,好东西适合我的项目,正在入门了
|
40
shyangs 2020-07-25 13:49:36 +08:00
内存好貴的。
|
41
ychost 2020-07-26 10:34:25 +08:00
如果觉得关系型数据库的速度太慢,可以考虑使用 Orcale/SQLServer 的「内存表」,这样既有事务支持,而且内存加持速度还很快,还能定时通过快照持久化,也支持水平扩展
|