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

2024-01-16 00:13:14 +08:00
 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 使用性能差别有多大

5209 次点击
所在节点    程序员
54 条回复
allenby
2024-01-16 12:35:24 +08:00
肯定是直接内存快
zoharSoul
2024-01-16 12:48:57 +08:00
什么没头没尾的问题, 现在 go 程序员都这样?
Daniel17
2024-01-16 13:26:54 +08:00
有没有可能是为了用 redis
weijancc
2024-01-16 13:51:12 +08:00
内置 map 肯定更快, 用 redis 是因为在分布式环境下可以共享, 以及可以持久化
zdt3476
2024-01-16 14:00:26 +08:00
这都没必要测试吧,网络 IO 怎么能和内存比
Seulgi
2024-01-16 14:08:06 +08:00
看了这个标题,眉头一皱,看了描述,眉头再皱,不知道具体想问什么问题。看了下面评论,眉头再一皱,还真有人在纠结讨论内置 map 和 redis 的性能。
aababc
2024-01-16 14:40:48 +08:00
不知道这个帖子想表达和讨论的是什么内容,一脸懵逼
Vegetable
2024-01-16 14:57:46 +08:00
darklost
2024-01-16 14:58:07 +08:00
多台机器跑横向扩展的时候就知道了
huyan3280
2024-01-16 15:00:18 +08:00
这还用想,redis 有 IO 呀,当然是内存,
xuanbg
2024-01-16 16:55:25 +08:00
肯定 Redis 要慢!但 Redis 可以持久化,也可以多机共享,这是你内存里面的 map 做不到的。所以,什么时候要用 Redis ,就很清楚了。
flyingghost
2024-01-17 11:24:05 +08:00
"一段需要保存的文本"

我发现一段文本用变量来存比用磁盘来存快上万倍哎!
e7
2024-01-17 11:50:11 +08:00
这属于常识性的问题,说明 op 还没入门啊
z1829909
2024-01-17 14:51:19 +08:00
本地存 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