Comments (6)
See http://godoc.org/github.com/garyburd/redigo/redis#example-Scan
for len(values) > 0 {
var destruct desttype
values, err = redis.Scan(values, &deststruct.id, &deststruct.title)
if err != nil {
// handle error
}
}
from redigo.
Is there a possibility this could work if multiple results were returned form SORT? If sort returns
"1Value1", "1Value2", "2Value1", "2Value2" ,"3Value1", "3Value2"
for example? Currenlty I work with a for like this:
for x := 0; x < len(values)/2; x++ {
p := desttype{}
p.Id = values[x*3+0]
p.Title =values[x*3+1]
retslice = append(retslice, p)
}
from redigo.
My loop above works with multiple results. Here's an update to the code showing how to fill in retSlice
var retSlice []desttype
for len(values) > 0 {
var p desttype
values, err = redis.Scan(values, &p.Id, &p.Title)
if err != nil {
// handle error
}
retslice = append(retslice, p)
}
It's possible to create a function ScanStructSlice:
var p []desttype
err := ScanStructSlice(values, &p, "Id", "Title")
This function will use reflection where it's not otherwise needed.
from redigo.
Sorry that I completely overread that it scans multiple results.
I don't know what the performance hit of reflect is, so would that method be a huge performance hit? It would certainly make code with lots of Redis SORTs smaller.
Would it also be possible to call into maps this way? You can't get pointers of map values so scan doesn't work for this. It would only be helpful for mockups though, because usually you use a real struct.
ScanStruct would benefit from being able to call into maps though, because it would allow Redis HASHes which have varying keys. Using ScanStruct with maps currently panics.
from redigo.
I added http://godoc.org/github.com/garyburd/redigo/redis#ScanSlice.
I did not add support for maps. Sketching out code with a map is not any easier than just using a struct. If the keys are unknown, then the application can construct a map using a for loop, map assignment and the Int, String, Bytes and Float64 functions as appropriate.
ScanStruct should return an error for maps. Were you using fe36254 or later?
from redigo.
Thank you for the addition, it really helped shorting my code.
My code with ScanStruct with a map used a redigo revision older than the one you linked.
from redigo.
Related Issues (20)
- `go get -u -t ./...` doesn't get the latest version of this module HOT 11
- Need a way to execute arbitrary redis commands on a connection from a `Pool` HOT 2
- Act subscribe immediately without receive message HOT 1
- use pipline send got ERR wrong number of arguments for 'set' command HOT 6
- Why is v1.8.9 newer than v2.0.0 ? HOT 1
- Could you remove v2.0.0 tag HOT 2
- pool can support FIFO? HOT 3
- Potential goroutine leak in TestDialTLSHandshakeTimeout HOT 1
- Expose DialOptions used to create the connection to support instrumentation/tracing features HOT 10
- dial-tcp-connect-cannot-assign-requested-address? HOT 1
- Not able to connect when Redis Password contains"/" HOT 2
- Wait pool timeout? HOT 2
- The order of pipeline send commands is not fixed HOT 3
- buffio.Write may write less bytes than requested HOT 1
- pubSubConn.Receive() is insufficient HOT 1
- Increase tail latencies when migrated service to arm64 architecture HOT 1
- Vulnerability of dependency "gopkg.in/yaml.v3"
- Support for log/slog HOT 11
- v2 Proposal HOT 2
- Compilation fails for v1.9.1 in go1.16 environment HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from redigo.