go 语言直接使用 map 和连接 Redis 后使用 Map 性能差别有多大

337 天前
 huahsiung

go 语言直接使用 map 很方便

map1 := make(map[string]int)
key1 := map1["str1"]

但是发现有些 go 项目源码偏向使用 Redis 等第三方的 map.

import (
    github.com/go-redis/redis"
)
 client := redis.NewClient(&redis.Options{
        Addr:     "localhost:6379", 
        Password: "",               
        DB:       0,                
    })
client.Ping()
client.HSet("myhash", "key1", "value1")
value1, err := client.HGet("myhash", "")

然后看到项目的 map 并不是并发使用的,数据量也不是特别大。(有些并没有持久需求的也在使用 redis )

go map 和 redis map 都是内存使用的,而且速度也很快。但是很多需要查找 hash 关系表的项目,偏向使用如 redis map 等第三方表。

我粗略测试了一下,没看出什么区别(可能我测试数据较小)。如果排除 go map 不能并发读写外与 Redis Map 使用性能差别有多大

4641 次点击
所在节点    程序员
54 条回复
Rehtt
337 天前
这对比没意义,就像在问火车和远洋轮渡谁快
wzw
337 天前
小系统可以考虑直接用 goframe 的 gmap, 当缓存,

系统启动的时候, 把所有数据读到 gmap 里面,

速度超级快, 还省了序列化的时间
8355
337 天前
举个例子
你现在想去厕所
去你家的厕所快
还是去邻居家的厕所快
wysnxzm
337 天前
我嫉妒你的才华
nothingistrue
337 天前
如果性能一样的话,当然是 Redis 的更好,你可以把内存占用、自动超时等烦心事一股脑的扔给 Redis 去处理。

但是性能是否一样,那还另说,不过这块我不擅长,不评论。

再但是,性能是够用就好,不是越高越好。所以,只要性能差距对上层没那么敏感,还是以功能方便为首要选择依据。然而,借用 Redis 做 Map 是增加编码和运维复杂度的,所以一般场景的功能上也会偏向于使用内置 Map 。如果你发现一般场景都用 Redis Map 来取代内置 Map ,那很有可能是内置 Map 太烂了。
RedisMasterNode
337 天前
有没有一种可能....用 Redis 的人寻求的是一个 "既可快速读写" ,"又可以多个服务(同个服务多个副本)" 访问的 KV 存储....

我看楼主的意思,应该没有多个副本吧,就一个普通的单实例应用
insert000
337 天前
又没有可能是集群应用?
realJamespond
337 天前
tcp 传输完内存都操作几百次,你说哪个快?
QlanQ
337 天前
你说的这都不是一个事情吧,需求都不一样吧,内存只能单机用呀,会这样写,肯定是预留扩展吧
qq1340691923
337 天前
jonsmith
337 天前
redis 是数据库,跟本地操作怎么比,语言再拉跨也比网络快啊
javaisthebest
337 天前
本地 Map 强多了为什么会出现 Redis?

为什么 Redis 功能这么强大还是会有本地 Map ?

先把这两个问题搞清楚吧。。 别一头雾水就提问
cloverzrg2
337 天前
外部的服务缓存,怎么能跟本地内存比速度。
一个网络耗时,就比本地内存数据速度慢几百倍
tairan2006
337 天前
分布式缓存和内存缓存的应用场景完全不一样,对比无意义
fgodt
337 天前
集群应用只能存 redis 自带的再快也不行
shellcodecow
337 天前
一个是持久化 一个是不是 redis 要 io 耗时的啊 看应用场景分不同用法...

如果是集群应用 那就要用到 redis
seth19960929
337 天前
你还是停留在单机呀, 当你上集群的时候, 你还用 map 吗
而且机器之间怎么交换数据, 缓存控制这些
sampeng
337 天前
哦。。那你这段数据同时被两个接口做 update ,请问阁下如何应对?
wOuv7i4e7XxsSOR1
337 天前
莫民奇妙的问题
wOuv7i4e7XxsSOR1
337 天前
莫名奇妙的问题

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

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

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

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

© 2021 V2EX