{"id":"dcd15272e7b6188e","repo":"go-redis/redis","slug":"georadiusbymember-does-not-support-store-or-stored","errorCode":null,"errorMessage":"GeoRadiusByMember does not support Store or StoreDist","messagePattern":"GeoRadiusByMember does not support Store or StoreDist","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"geo_commands.go","lineNumber":75,"sourceCode":"\tcmd := NewIntCmd(ctx, args...)\n\tif query.Store == \"\" && query.StoreDist == \"\" {\n\t\tcmd.SetErr(errors.New(\"GeoRadiusStore requires Store or StoreDist\"))\n\t\treturn cmd\n\t}\n\t_ = c(ctx, cmd)\n\treturn cmd\n}\n\n// GeoRadiusByMember queries a geospatial index for members within a distance from a member.\n// This is a read-only variant that does not support Store or StoreDist options.\n//\n// Deprecated: Use GeoSearch with BYRADIUS and FROMMEMBER arguments instead as of Redis 6.2.0.\nfunc (c cmdable) GeoRadiusByMember(\n\tctx context.Context, key, member string, query *GeoRadiusQuery,\n) *GeoLocationCmd {\n\tcmd := NewGeoLocationCmd(ctx, query, \"georadiusbymember_ro\", key, member)\n\tif query.Store != \"\" || query.StoreDist != \"\" {\n\t\tcmd.SetErr(errors.New(\"GeoRadiusByMember does not support Store or StoreDist\"))\n\t\treturn cmd\n\t}\n\t_ = c(ctx, cmd)\n\treturn cmd\n}\n\n// GeoRadiusByMemberStore is a writing GEORADIUSBYMEMBER command.\nfunc (c cmdable) GeoRadiusByMemberStore(\n\tctx context.Context, key, member string, query *GeoRadiusQuery,\n) *IntCmd {\n\targs := geoLocationArgs(query, \"georadiusbymember\", key, member)\n\tcmd := NewIntCmd(ctx, args...)\n\tif query.Store == \"\" && query.StoreDist == \"\" {\n\t\tcmd.SetErr(errors.New(\"GeoRadiusByMemberStore requires Store or StoreDist\"))\n\t\treturn cmd\n\t}\n\t_ = c(ctx, cmd)\n\treturn cmd","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/go-redis/redis/blob/36d97525cd8076aed67cddf54778e9ea84550929/geo_commands.go#L57-L93","documentation":"GeoRadiusByMember uses the read-only GEORADIUSBYMEMBER_RO command and rejects Store/StoreDist (geo_commands.go:74-76). To persist results you must use the writing variant GeoRadiusByMemberStore.","triggerScenarios":"Calling client.GeoRadiusByMember(ctx, key, member, &GeoRadiusQuery{Store: \"dest\"}) or with StoreDist set.","commonSituations":"Migrating from deprecated GEORADIUSBYMEMBER that allowed Store, or pairing a member query with persistence intent.","solutions":["Use client.GeoRadiusByMemberStore(...) for the writing form.","Unset Store/StoreDist for a pure read.","Prefer GeoSearchStore with FROMMEMBER on Redis >= 6.2."],"exampleFix":"// before\nclient.GeoRadiusByMember(ctx, key, m, &redis.GeoRadiusQuery{Store: \"dest\"})\n// after\nclient.GeoRadiusByMemberStore(ctx, key, m, &redis.GeoRadiusQuery{Store: \"dest\"})","handlingStrategy":"validation","validationCode":"if query.Store != \"\" || query.StoreDist != \"\" {\n    return client.GeoRadiusByMemberStore(ctx, key, member, query)\n}\nreturn client.GeoRadiusByMember(ctx, key, member, query)","typeGuard":"func isStoreQuery(q *redis.GeoRadiusQuery) bool {\n    return q.Store != \"\" || q.StoreDist != \"\"\n}","tryCatchPattern":"cmd := client.GeoRadiusByMember(ctx, key, m, query)\nif err := cmd.Err(); err != nil && strings.Contains(err.Error(), \"does not support Store\") {\n    return client.GeoRadiusByMemberStore(ctx, key, m, query)\n}","preventionTips":["Pair member+store intent with GeoRadiusByMemberStore.","Migrate to GeoSearchStore(FROMMEMBER) on Redis >= 6.2."],"tags":["geo","georadiusbymember","validation","deprecated"],"analyzedSha":"36d97525cd8076aed67cddf54778e9ea84550929","analyzedAt":"2026-08-06T01:08:27.376Z","schemaVersion":2}