diff --git a/v2/README.md b/v2/README.md index 9eb65ce..fc3fe41 100644 --- a/v2/README.md +++ b/v2/README.md @@ -161,6 +161,36 @@ fmt.Println(msg, err) // &{mychannel hello} ``` +To use Lua scripting: + +```go +client := redis.NewTCPClient(&redis.Options{ + Addr: ":6379", +}) +defer client.Close() + +setnx := redis.NewScript(` + if redis.call("get", KEYS[1]) == false then + redis.call("set", KEYS[1], ARGV[1]) + return 1 + end + return 0 +`) + +run1 := setnx.Run(client, []string{"keynx"}, []string{"foo"}) +fmt.Println(run1.Val().(int64), run1.Err()) + +run2 := setnx.Run(client, []string{"keynx"}, []string{"bar"}) +fmt.Println(run2.Val().(int64), run2.Err()) + +get := client.Get("keynx") +fmt.Println(get) + +// Output: 1 +// 0 +// GET keynx: foo +``` + You can also write custom commands: ```go diff --git a/v2/example_test.go b/v2/example_test.go index aabea69..0b5aa39 100644 --- a/v2/example_test.go +++ b/v2/example_test.go @@ -152,12 +152,12 @@ func ExampleScript() { defer client.Close() setnx := redis.NewScript(` - if redis.call("get", KEYS[1]) == false then - redis.call("set", KEYS[1], ARGV[1]) - return 1 - end - return 0 - `) + if redis.call("get", KEYS[1]) == false then + redis.call("set", KEYS[1], ARGV[1]) + return 1 + end + return 0 + `) run1 := setnx.Run(client, []string{"keynx"}, []string{"foo"}) fmt.Println(run1.Val().(int64), run1.Err())