我想询问 Redis 的刚需在哪里呢?

2023-05-09 04:10:48 +08:00
 nnegier

我对 Redis 的看法,它是一个运行在内存中的数据结构数据库服务器,也因此我不知道在什么时候应该用 Redis ,因为既然是数据结构既然是内存,我完全可以自己写一个数据结构如 HashMap 存在自己的进程内部,而我也是这样干的。

也有人拿它来做磁盘关系型数据库的缓存,但我个人也想过,不过我用了 MyBatis 来做 MySQL 的访问中间层,二级缓存 MyBatis 本身也能做,配置上加个 cache 就好了,甚至还可以自定义缓存实现。

所以,我比较想知道这个知名工具 Redis 解决的核心痛点是什么?

6455 次点击
所在节点    程序员
60 条回复
qsnow6
2023-05-09 11:36:58 +08:00
@raysonlu #20 还真有,能 sqlite 为什么要用 MYSQL😋
hankai17
2023-05-09 11:44:10 +08:00
集群 就这一条
quicksand
2023-05-09 11:46:12 +08:00
@darkengine #10 确实, 我以前也想过自己基于内存写一个能持久化数据的 HashMap 来代替, 后来发现其实实现起来是有些麻烦的, 要考虑的东西很多, 还不如直接用 redis
dqzcwxb
2023-05-09 11:52:48 +08:00
其他的上面都说了,我说一个没人说的:保证原子性
seth19960929
2023-05-09 12:08:35 +08:00
Redis 主要两个作用:
缓存:
这个你可以用文件实现, 单机器用 map 比 Reids 性能好多,
如果部署一百台机器的话, 比如你缓存有 100M, 那 map 就是 100M*100, redis 只用 100M

分布式锁, session 这些, 队列其他功能:
这个 map 实现不了
coyoteer
2023-05-09 15:03:10 +08:00
redis!=缓存。redis 跟 mysql 一样都是数据库,只是一个是非关系型的、一个是关系型的,一个存储在内存中使用磁盘进行备份,一个存储在磁盘中使用内存进行缓存。。。
sunmlight
2023-05-09 15:04:45 +08:00
路走窄了
daiv
2023-05-09 15:10:29 +08:00
我现在用 Golang, 由于是单机服务运行, 所以直接用 Map 放到内存中去, 每次重启 数据库 > 内存 , 目前使用还好, 速度也比 Redis 快很多
yule111222
2023-05-09 15:12:04 +08:00
分布式缓存呀
unco020511
2023-05-09 15:22:43 +08:00
多节点
lshero
2023-05-09 15:33:41 +08:00
多机器共享缓存
懒得装消息队列临时充当一下消息队列
协议简单,异构的系统之间好集成不同语言都有客户端。我之前工作过的一个公司用 Redis 协议作为 RPC 的通讯协议开发了一套服务治理系统。
di94sh
2023-05-09 18:25:54 +08:00
就一个,你用 HashMap 怎么解决多台机器数据同步问题。a 机器更新了,b 机器还用旧的?
pkoukk
2023-05-09 18:33:17 +08:00
就一条,多机器共享内存
没错,你可以说干嘛非要共享内存,写数据库又稳又方便
数据库顶不住可以加配置嘛,搞物理机 mysql ,36C500G 内存的 mysql 强行顶
daimubai
2023-05-09 18:34:50 +08:00
分布式
Lucups
2023-05-09 19:03:04 +08:00
Redis 的功能远大于 “一个数据结构如 HashMap 存在自己的进程内部”。

理论上自己实现一个类似 Redis 功能的工具并不难,但是稳定、性能等无法与 Redis 匹敌,更不要说 Redis 还有丰富的生态与社区支持了。

PS: Redis 的通信协议 RESP 设计的也非常优秀。
janus77
2023-05-09 19:24:43 +08:00
当他从一个单纯的缓存( hashmap )进化成数据库以后,他的功能就复杂多了,随便举例:
多进程,多节点、集群、分布式,吞吐量、性能,同步、数据恢复……
roundgis
2023-05-09 22:54:20 +08:00
redis 什麼都能做

消息隊列 cache ipc

性能也還過得去 接入也容易

真的成為瓶頸 換掉也不麻煩

對大多數的系統而言根本就沒機會換掉它
zhaogaz
2023-05-09 23:23:33 +08:00
现有的问题解决不了,引入 redis 解决了,这就算痛点吧。可以以这个角度分析
Al0rid4l
2023-05-10 01:56:58 +08:00
你也说了单进程直接存进程内存, 其实论性能这毫无疑问比 Redis 更好

但假如你要多线程 /多进程, 你自己实现共享内存, 管理并发安全.

假如你还要支持各种缓存策略, 又要自己实现

假如你继续支持分布式和更多需求...

当你都实现了, 恭喜你, 做了个 low 配 Redis.
eDeeraiD0thei6Oh
2023-05-10 02:25:16 +08:00
分布式啊。说明你的服务都是单机运行??? 量级太小了吧??

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

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

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

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

© 2021 V2EX