mirror of
https://github.com/redis/go-redis.git
synced 2025-06-14 01:21:30 +03:00
adjust the code (#1842)
* Upgrade redis-server version (#1833) * Upgrade redis-server version Signed-off-by: monkey <golang@88.com> * XAutoClaim changed the return value Signed-off-by: monkey <golang@88.com> * add cmd: geosearch, geosearchstore (#1836) * add cmd: geosearch, geosearchstore Signed-off-by: monkey92t <golang@88.com> * GeoSearchQuery and GeoSearchLocationQuery changed to pointer passing Signed-off-by: monkey92t <golang@88.com> * adjust the code, and fix #1553, #1676 Signed-off-by: monkey92t <golang@88.com>
This commit is contained in:
209
commands_test.go
209
commands_test.go
@ -4657,7 +4657,7 @@ var _ = Describe("Commands", func() {
|
||||
}
|
||||
msgs, start, err := client.XAutoClaim(ctx, xca).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(start).To(Equal("2-0"))
|
||||
Expect(start).To(Equal("3-0"))
|
||||
Expect(msgs).To(Equal([]redis.XMessage{{
|
||||
ID: "1-0",
|
||||
Values: map[string]interface{}{"uno": "un"},
|
||||
@ -4669,19 +4669,16 @@ var _ = Describe("Commands", func() {
|
||||
xca.Start = start
|
||||
msgs, start, err = client.XAutoClaim(ctx, xca).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(start).To(Equal("3-0"))
|
||||
Expect(start).To(Equal("0-0"))
|
||||
Expect(msgs).To(Equal([]redis.XMessage{{
|
||||
ID: "2-0",
|
||||
Values: map[string]interface{}{"dos": "deux"},
|
||||
}, {
|
||||
ID: "3-0",
|
||||
Values: map[string]interface{}{"tres": "troix"},
|
||||
}}))
|
||||
|
||||
ids, start, err := client.XAutoClaimJustID(ctx, xca).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(start).To(Equal("3-0"))
|
||||
Expect(ids).To(Equal([]string{"2-0", "3-0"}))
|
||||
Expect(start).To(Equal("0-0"))
|
||||
Expect(ids).To(Equal([]string{"3-0"}))
|
||||
})
|
||||
|
||||
It("should XClaim", func() {
|
||||
@ -5167,6 +5164,204 @@ var _ = Describe("Commands", func() {
|
||||
nil,
|
||||
}))
|
||||
})
|
||||
|
||||
It("should geo search", func() {
|
||||
q := &redis.GeoSearchQuery{
|
||||
Member: "Catania",
|
||||
BoxWidth: 400,
|
||||
BoxHeight: 100,
|
||||
BoxUnit: "km",
|
||||
Sort: "asc",
|
||||
}
|
||||
val, err := client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania"}))
|
||||
|
||||
q.BoxHeight = 400
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania", "Palermo"}))
|
||||
|
||||
q.Count = 1
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania"}))
|
||||
|
||||
q.CountAny = true
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Palermo"}))
|
||||
|
||||
q = &redis.GeoSearchQuery{
|
||||
Member: "Catania",
|
||||
Radius: 100,
|
||||
RadiusUnit: "km",
|
||||
Sort: "asc",
|
||||
}
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania"}))
|
||||
|
||||
q.Radius = 400
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania", "Palermo"}))
|
||||
|
||||
q.Count = 1
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania"}))
|
||||
|
||||
q.CountAny = true
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Palermo"}))
|
||||
|
||||
q = &redis.GeoSearchQuery{
|
||||
Longitude: 15,
|
||||
Latitude: 37,
|
||||
BoxWidth: 200,
|
||||
BoxHeight: 200,
|
||||
BoxUnit: "km",
|
||||
Sort: "asc",
|
||||
}
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania"}))
|
||||
|
||||
q.BoxWidth, q.BoxHeight = 400, 400
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania", "Palermo"}))
|
||||
|
||||
q.Count = 1
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania"}))
|
||||
|
||||
q.CountAny = true
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Palermo"}))
|
||||
|
||||
q = &redis.GeoSearchQuery{
|
||||
Longitude: 15,
|
||||
Latitude: 37,
|
||||
Radius: 100,
|
||||
RadiusUnit: "km",
|
||||
Sort: "asc",
|
||||
}
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania"}))
|
||||
|
||||
q.Radius = 200
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania", "Palermo"}))
|
||||
|
||||
q.Count = 1
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Catania"}))
|
||||
|
||||
q.CountAny = true
|
||||
val, err = client.GeoSearch(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]string{"Palermo"}))
|
||||
})
|
||||
|
||||
It("should geo search with options", func() {
|
||||
q := &redis.GeoSearchLocationQuery{
|
||||
GeoSearchQuery: redis.GeoSearchQuery{
|
||||
Longitude: 15,
|
||||
Latitude: 37,
|
||||
Radius: 200,
|
||||
RadiusUnit: "km",
|
||||
Sort: "asc",
|
||||
},
|
||||
WithHash: true,
|
||||
WithDist: true,
|
||||
WithCoord: true,
|
||||
}
|
||||
val, err := client.GeoSearchLocation(ctx, "Sicily", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal([]redis.GeoLocation{
|
||||
{
|
||||
Name: "Catania",
|
||||
Longitude: 15.08726745843887329,
|
||||
Latitude: 37.50266842333162032,
|
||||
Dist: 56.4413,
|
||||
GeoHash: 3479447370796909,
|
||||
},
|
||||
{
|
||||
Name: "Palermo",
|
||||
Longitude: 13.36138933897018433,
|
||||
Latitude: 38.11555639549629859,
|
||||
Dist: 190.4424,
|
||||
GeoHash: 3479099956230698,
|
||||
},
|
||||
}))
|
||||
})
|
||||
|
||||
It("should geo search store", func() {
|
||||
q := &redis.GeoSearchStoreQuery{
|
||||
GeoSearchQuery: redis.GeoSearchQuery{
|
||||
Longitude: 15,
|
||||
Latitude: 37,
|
||||
Radius: 200,
|
||||
RadiusUnit: "km",
|
||||
Sort: "asc",
|
||||
},
|
||||
StoreDist: false,
|
||||
}
|
||||
|
||||
val, err := client.GeoSearchStore(ctx, "Sicily", "key1", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal(int64(2)))
|
||||
|
||||
q.StoreDist = true
|
||||
val, err = client.GeoSearchStore(ctx, "Sicily", "key2", q).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(val).To(Equal(int64(2)))
|
||||
|
||||
loc, err := client.GeoSearchLocation(ctx, "key1", &redis.GeoSearchLocationQuery{
|
||||
GeoSearchQuery: q.GeoSearchQuery,
|
||||
WithCoord: true,
|
||||
WithDist: true,
|
||||
WithHash: true,
|
||||
}).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(loc).To(Equal([]redis.GeoLocation{
|
||||
{
|
||||
Name: "Catania",
|
||||
Longitude: 15.08726745843887329,
|
||||
Latitude: 37.50266842333162032,
|
||||
Dist: 56.4413,
|
||||
GeoHash: 3479447370796909,
|
||||
},
|
||||
{
|
||||
Name: "Palermo",
|
||||
Longitude: 13.36138933897018433,
|
||||
Latitude: 38.11555639549629859,
|
||||
Dist: 190.4424,
|
||||
GeoHash: 3479099956230698,
|
||||
},
|
||||
}))
|
||||
|
||||
v, err := client.ZRangeWithScores(ctx, "key2", 0, -1).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(v).To(Equal([]redis.Z{
|
||||
{
|
||||
Score: 56.441257870158204,
|
||||
Member: "Catania",
|
||||
},
|
||||
{
|
||||
Score: 190.44242984775784,
|
||||
Member: "Palermo",
|
||||
},
|
||||
}))
|
||||
})
|
||||
})
|
||||
|
||||
Describe("marshaling/unmarshaling", func() {
|
||||
|
Reference in New Issue
Block a user