redis压测
This commit is contained in:
parent
fc38b7f4ca
commit
c27d8c456c
@ -7,6 +7,8 @@ import (
|
||||
|
||||
type Target struct {
|
||||
//这里定义需要测试的方法
|
||||
Set func()
|
||||
Get func()
|
||||
}
|
||||
|
||||
//测试基准
|
||||
@ -46,15 +48,15 @@ func RunBenchmark(b *testing.B, benchmarks []Benchmark) {
|
||||
for _, bench := range benchmarks {
|
||||
bench := bench
|
||||
b.Run(fmt.Sprintf("%s-parallelism(%d)- ", bench.TargetBuilder.Name, bench.Parallelism), func(b *testing.B) {
|
||||
// target, err := bench.TargetBuilder.Make(bench)
|
||||
// if err != nil {
|
||||
// b.Fatalf("%s setup fail: %v", bench.TargetBuilder.Name, err)
|
||||
// }
|
||||
target, err := bench.TargetBuilder.Make(bench)
|
||||
if err != nil {
|
||||
b.Fatalf("%s setup fail: %v", bench.TargetBuilder.Name, err)
|
||||
}
|
||||
if bench.Parallelism == 0 {
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
//执行测试方法
|
||||
|
||||
target.Get()
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -63,6 +65,7 @@ func RunBenchmark(b *testing.B, benchmarks []Benchmark) {
|
||||
b.RunParallel(func(pb *testing.PB) { //并行执行
|
||||
for pb.Next() {
|
||||
//执行测试方法
|
||||
target.Get()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -1,27 +1,104 @@
|
||||
package bench
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"go_dreamfactory/sys/cache"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/go-redis/redis/v8"
|
||||
)
|
||||
|
||||
func BenchmarkMarsh(b *testing.B) {
|
||||
var LusScriptgetList = `
|
||||
local data = {}
|
||||
local n = 1
|
||||
for i, v in ipairs(KEYS) do
|
||||
if i%2 == 0 then
|
||||
data[n] = redis.call("HGETALL", v)
|
||||
n = n+1
|
||||
end
|
||||
end
|
||||
return data
|
||||
`
|
||||
var res string
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
if err := cache.OnInit(nil, cache.Set_Redis_Addr([]string{
|
||||
"10.0.0.9:6986",
|
||||
// "10.0.0.9:9001", "10.0.0.9:9002", "10.0.0.9:9003", "10.0.1.45:9004", "10.0.1.45:9005", "10.0.1.45:9006",
|
||||
}),
|
||||
// cache.Set_Redis_Password(""),
|
||||
cache.Set_Redis_Password("li13451234"),
|
||||
cache.Set_Redis_DB(9),
|
||||
cache.Set_Redis_IsCluster(false)); err != nil {
|
||||
fmt.Printf("err:%v\n", err)
|
||||
return
|
||||
}
|
||||
var err error
|
||||
|
||||
res, err = cache.Redis().NewScript(LusScriptgetList).Result()
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
defer os.Exit(m.Run())
|
||||
}
|
||||
func BenchmarkRedis(b *testing.B) {
|
||||
var (
|
||||
// ncpu = runtime.NumCPU()
|
||||
parallelisms = []int{4, 16, 64}
|
||||
dataSizes = []int{100, 1000, 10000}
|
||||
numKeys = 1024
|
||||
builders = []TargetBuilder{
|
||||
keys = []string{
|
||||
"hero:0_62d6131a3a719b898a90b5fb-62d6131a3a719b898a90b5fe",
|
||||
"hero:0_62d6131a3a719b898a90b5fb-62d6131a3a719b898a90b600",
|
||||
"hero:0_62d6131a3a719b898a90b5fb-62d661d6bca6eab554879fc6",
|
||||
"hero:0_62d6131a3a719b898a90b5fb-62d6694dbca6eab554879fef",
|
||||
// "hero:0_62bbf14cf88fbd265e61a121-62bbf1849d64e5ee7ff12529",
|
||||
// "hero:0_62bbf364f88fbd265e61a122-62bbf5189b1970ed6b28b638",
|
||||
// "hero:0_62bbf364f88fbd265e61a122-62bbf5189b1970ed6b28b63e",
|
||||
// "hero:0_62bbf57346a32c12466c2e64-62bbf58d9b1970ed6b28b643",
|
||||
}
|
||||
// keys2 = []string{
|
||||
// "hero:0_62bbf14cf88fbd265e61a121-62bbf1849d64e5ee7ff12529{yes}",
|
||||
// "hero:0_62bbf364f88fbd265e61a122-62bbf5189b1970ed6b28b638{yes}",
|
||||
// "hero:0_62bbf364f88fbd265e61a122-62bbf5189b1970ed6b28b63e{yes}",
|
||||
// "hero:0_62bbf57346a32c12466c2e64-62bbf58d9b1970ed6b28b643{yes}",
|
||||
// }
|
||||
builders = []TargetBuilder{
|
||||
{
|
||||
Name: "测试名1",
|
||||
Name: "pipeline",
|
||||
Make: func(bench Benchmark) (Target, error) {
|
||||
|
||||
return Target{}, nil
|
||||
return Target{
|
||||
Get: func() {
|
||||
for _, v := range keys {
|
||||
ctx := context.Background()
|
||||
cache.Redis().Pipeline(ctx, func(pipe redis.Pipeliner) error {
|
||||
pipe.HGetAll(ctx, v)
|
||||
_, err := pipe.Exec(ctx)
|
||||
// fmt.Println(v)
|
||||
return err
|
||||
})
|
||||
}
|
||||
},
|
||||
}, nil
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "测试名2",
|
||||
Name: "lua",
|
||||
Make: func(bench Benchmark) (Target, error) {
|
||||
return Target{}, nil
|
||||
return Target{
|
||||
Get: func() {
|
||||
|
||||
if _, err := cache.Redis().EvalSha(context.Background(), res, keys).Result(); err != nil {
|
||||
fmt.Println(err)
|
||||
} else {
|
||||
// fmt.Println(v)
|
||||
}
|
||||
|
||||
},
|
||||
}, nil
|
||||
},
|
||||
},
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user