go使用go-redis操作redis(二)返回类型

返回类型:

  1. BoolCmd

    返回bool 值命令, 提供的一些函数:

    func NewBoolCmd(args ...interface{}) *BoolCmd
    func NewBoolResult(val bool, err error) *BoolCmd
    func (cmd *BoolCmd) Args() []interface{}
    func (cmd *BoolCmd) Err() error
    func (cmd *BoolCmd) Name() string
    func (cmd *BoolCmd) Result() (bool, error)
    func (cmd *BoolCmd) String() string   返回字符串结果
    func (cmd *BoolCmd) Val() bool    计算, 返回bool
    

    该类主要配合其他方法使用,当返回BoolCmd值可以使用对应的类方法

    笔者尝试自定义命令, 但验证结果不是预期的结果,因此不建议自定义使用

    例如:

    	GetBool := func(redisdb *redis.Client, key string) *redis.BoolCmd {
    		cmd := redis.NewBoolCmd("get", key)
    		redisdb.Process(cmd)
    		return cmd
    	}
    	SetBool := func(redisdb *redis.Client, key string, value bool) *redis.BoolCmd {
    		cmd := redis.NewBoolCmd("set", key, value)
    		redisdb.Process(cmd)
    		return cmd
    	}
    	SetBool(client, "dobool", true)
    	v2, err := GetBool(client, "dobool").Result()
    	fmt.Println(v2, err)
    

    输出:

    false <nil>
    
  2. BoolSliceCmd

    返回bool的切片结果,是一组结果,一般用于批量命令

  3. CommandsInfoCmd

    返回命令信息, 提供命令信息的查询

    func NewCommandsInfoCmd(args ...interface{}) *CommandsInfoCmd
    func NewCommandsInfoCmdResult(val map[string]*CommandInfo, err error) *CommandsInfoCmd
    func (cmd *CommandsInfoCmd) Args() []interface{}
    func (cmd *CommandsInfoCmd) Err() error
    func (cmd *CommandsInfoCmd) Name() string
    func (cmd *CommandsInfoCmd) Result() (map[string]*CommandInfo, error)
    func (cmd *CommandsInfoCmd) String() string
    func (cmd *CommandsInfoCmd) Val() map[string]*CommandInfo
    

    例如:

    	res3 := client.Command().String()
    	fmt.Println(res3)
    

    输出:

    command: map[hincrby:0xc04204e800 slaveof:0xc04204ef40 getrange:0xc04204f380 
    zremrangebyscore:0xc04204f600 hmset:0xc04204fe00 lastsave:0xc04204fe40 
    lrem:0xc04204ef00 pfcou
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言中也可以使用github.com/go-redis/redis包里的GeoRadius函数来实现根据经纬度和半径获取地理位置信息的功能。该函数的参数与redis命令的参数基本一致,包括:key、longitude、latitude、radius、unit、以及可选参数(例如是否只返回距离信息、是否按距离排序等)。以下是一个简单的使用示例: ```go import ( "github.com/go-redis/redis" ) func main() { //连接Redis数据库 client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB: 0, // use default DB }) //设置中心点经纬度 longitude := 116.397128 latitude := 39.916527 //设置半径和单位(单位可以是米、千米、英里等) radius := redis.GeoRadiusQuery{ Radius: 1000, Unit: "m", } //设置可选参数 options := redis.GeoRadiusCmd{ WithDist: true, WithCoord: true, Count: 10, Sort: "ASC", } //调用GeoRadius函数并获取结果 results, err := client.GeoRadius("mylocations", longitude, latitude, &radius).WithGeoHash().WithDist().WithCoord().WithCount(10).SortAsc().Result() if err != nil { fmt.Println("GeoRadius error", err) return } //遍历结果并输出 for _, result := range results { locationName := result.Name locationDist := result.Dist locationCoord := result.GeoHash fmt.Println(locationName, locationDist, locationCoord) } } ``` 需要注意的是,使用该包时需要先在Go module中导入github.com/go-redis/redis包,然后在代码中引入该包,并通过NewClient函数创建一个Redis客户端。在调用GeoRadius函数时,需要使用GeoRadiusQuery和GeoRadiusCmd类型的变量来设置半径、单位以及可选参数等信息。最后的结果可以使用Result函数来获取,返回的是一个GeoLocation类型的slice。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值