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

338 天前
 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 条回复
allenby
337 天前
肯定是直接内存快
zoharSoul
337 天前
什么没头没尾的问题, 现在 go 程序员都这样?
Daniel17
337 天前
有没有可能是为了用 redis
weijancc
337 天前
内置 map 肯定更快, 用 redis 是因为在分布式环境下可以共享, 以及可以持久化
zdt3476
337 天前
这都没必要测试吧,网络 IO 怎么能和内存比
Seulgi
337 天前
看了这个标题,眉头一皱,看了描述,眉头再皱,不知道具体想问什么问题。看了下面评论,眉头再一皱,还真有人在纠结讨论内置 map 和 redis 的性能。
aababc
337 天前
不知道这个帖子想表达和讨论的是什么内容,一脸懵逼
Vegetable
337 天前
darklost
337 天前
多台机器跑横向扩展的时候就知道了
huyan3280
337 天前
这还用想,redis 有 IO 呀,当然是内存,
xuanbg
337 天前
肯定 Redis 要慢!但 Redis 可以持久化,也可以多机共享,这是你内存里面的 map 做不到的。所以,什么时候要用 Redis ,就很清楚了。
flyingghost
336 天前
"一段需要保存的文本"

我发现一段文本用变量来存比用磁盘来存快上万倍哎!
e7
336 天前
这属于常识性的问题,说明 op 还没入门啊
z1829909
336 天前
本地存 map 的话, 要考虑不常用的数据回收掉, 不然内存一直涨. 还要考虑持久化, 多节点的话数据不一致. 折腾这么多不如直接 redis 了. redis 肯定是慢的, 因为需要通过网络获取数据, 慢多少取决于网络上消耗了多少

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

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

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

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

© 2021 V2EX