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

359 天前
 nnegier

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

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

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

6363 次点击
所在节点    程序员
60 条回复
yuelang85
359 天前
你可以自己写一个内存数据库,事实上各种语言也都有这样的工具。可是有两个问题:

1 ,功能,速度,是否能达到你的需求,如果要达到,需要多少工作量?

2 ,单进程应用还好,多个进程需要共享数据怎么办?
TuringHero
359 天前
你也可以看作多节点下的共享内存方案。而且还实现了像集群、持久化、消息队列、地理搜索、Lua 等一些功能,缓存单独部署可靠性也高一些。项目想不到哪里有用的话就不要用,本地缓存可以实现的话就没必要增加复杂度引入 Redis
Jhon11
359 天前
作用类似数据库,本地内存替代不了的
tulongtou
359 天前
1. redis 开始流行的时候,PHP 还大行其道,而 php 是单进程模式,没有办法自己写内存缓存。
2. 大型缓存服务可能不止在一台机器上,假设有 10 台机器用作缓存,直接用 redis 会比自己开发节省时间的。
Akitora
359 天前
分布式锁
crysislinux
359 天前
单进程当然可以进程缓存了。但是多进程甚至多机器进程缓存就会有不一致的问题了。另外单独的缓存服务器可以加大内存,但是你给每个应用服务器搞很大的缓存就比较浪费了。
Yeen
359 天前
那么楼主 memcache 可以了解一下,
这些技术无非就是数据库上层做更特殊需求用的(性能、非持久化 /半持久化等等),而且也不止 redis 一种技术,轮子太多了
hhjswf
359 天前
啊这,如果你一个应用有两个实例呢,你能保证这两个实例各自内存数据一致性吗
chaleaochexist
359 天前
单体应用问题不大.
考虑分布式场景.
clusterRedis 是一方面
还有分布式应用依赖 redis 场景.
darkengine
359 天前
除了楼上说的多进程共享数据问题。如果你用 HashMap 解决缓存问题,每次重启进程都所有“缓存”都会丢失。
matrix1010
359 天前
Redis 没有刚需,但这类远程缓存服务有一个刚需场景是 serverless. 其实 Redis 作为纯缓存相比 memcache/keydb/dragonflydb 这些支持多线程的没有优势,Redis 流行是因为数据结构 /功能多。Redis 自己也认识到纯缓存性能问题所以加了 Client-side caching 的功能,但 Client-side caching 是 Redis server 辅助 client ,需要 client 自己实现内存缓存,所以现在用的还不多
xiaowowo
359 天前
1.支持多种数据结构和数据查询方式
2.多进程多实例共享同步
3.业务和缓存隔离,更新业务不会导致缓存丢失
4.支持持久化
5.很多语言无法实现内存缓存或实现性能不佳
6.支持横向扩容,支持分布式
Maboroshii
359 天前
稳定性。 没那么容易挂
fox0001
359 天前
楼上都讲清楚了。我觉得是:高性能、数据共享、集群
lower
359 天前
这类缓存工具核心肯定是给数据库“减负”……
具体到各种缓存工具的使用,肯定要看实际场景啊,比如虽然我是单体应用,但是只要把会话信息存 redis 里,单体应用就是无状态啦,可以很方便部署多个实例
性能的话,走网络的 redis 肯定不如进程内缓存

我甚至觉得 redis 可以作为好多种工具的底层 kv 存储,提供一套统一的插件开发接口,上层开发各种各样工具,除了它已经搞的分布式锁、发布订阅;还可以把服务注册、配置管理、分布式事务之类这种功能全在它上面开发插件实现,搞一个真正的大一统超级缝合怪😂
wanguorui123
359 天前
分布式下作为共享内存用
dayeye2006199
359 天前
缓存很多时候都不是必须的
mineralsalt
359 天前
单实例软件确实没必要用, 你以后用到分布式部署就知道了
dif
358 天前
第一、免费。
第二、好用,能适用与绝大部分场景,因为用的公司多也比较成熟,很难遇到 bug 。
第三、专业的事情由专业的团队去做。我只需要调用 api 就行。节约成本
第四、可以找借口优化拿钱,其实很多项目做 1-2 期基本上就很难迭代下去了,然后就会进入维护期,维护期很难有成果,那么就可以把一个接口从 5 秒逐渐优化到 100ms (中间会经历 sleep(300),sleep(200),sleep(60)。。。。 上 redis )。搞完了还能写一篇公众号《通过这个小技巧,我把接口的响应时间降低了 3000 倍》,double win -> win win
raysonlu
358 天前
有生之年我会不会见到类似《我想询问 Mysql 的刚需在哪里呢?》的帖子?

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

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

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

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

© 2021 V2EX