MCPcopy
hub / github.com/redis/go-redis / EvalSha

Method EvalSha

script.go:128–159  ·  view source on GitHub ↗
(ctx context.Context, c Scripter, keys []string, args ...interface{})

Source from the content-addressed store, hash-verified

126}
127
128func (s *Script) EvalSha(ctx context.Context, c Scripter, keys []string, args ...interface{}) *Cmd {
129 // Default behavior: use client-side SHA-1 computed in NewScript.
130 if !s.serverSHA {
131 s.mu.RLock()
132 hash := s.hash
133 s.mu.RUnlock()
134 return c.EvalSha(ctx, hash, keys, args...)
135 }
136
137 // Server-side SHA via SCRIPT LOAD + EVALSHA.
138 if err := s.ensureHash(ctx, c); err != nil {
139 return s.Eval(ctx, c, keys, args...)
140 }
141
142 s.mu.RLock()
143 hash := s.hash
144 s.mu.RUnlock()
145
146 r := c.EvalSha(ctx, hash, keys, args...)
147 if HasErrorPrefix(r.Err(), "NOSCRIPT") {
148 // Script cache was flushed; reload and retry once.
149 if err := s.ensureHash(ctx, c); err != nil {
150 return s.Eval(ctx, c, keys, args...)
151 }
152 s.mu.RLock()
153 hash = s.hash
154 s.mu.RUnlock()
155 return c.EvalSha(ctx, hash, keys, args...)
156 }
157
158 return r
159}
160
161func (s *Script) EvalShaRO(ctx context.Context, c Scripter, keys []string, args ...interface{}) *Cmd {
162 if !s.serverSHA {

Callers 1

RunMethod · 0.95

Calls 5

ensureHashMethod · 0.95
EvalMethod · 0.95
HasErrorPrefixFunction · 0.85
EvalShaMethod · 0.65
ErrMethod · 0.65

Tested by

no test coverage detected