Redis按照数字、汉字、拼音快速搜索通讯录接口

Redis 是内存级操作,所以单次的查询会很快,非常适合用于一些快速搜索场景。本文以邮箱通讯录为例,介绍redis快速搜索。
编程语言:golang
接口框架:beego
1、Redis连接
采用连接池方式连接redis数据库

var RedisClient *redis.Pool

func ConnectRedis() {
	host := beego.AppConfig.DefaultString("redis.host", "127.0.0.1:6379")//通过beego配置文件获取
	pwd := beego.AppConfig.DefaultString("redis.psw", "")
	MaxIdle := beego.AppConfig.DefaultInt("redis.MaxIdle", 100)
	MaxActive := beego.AppConfig.DefaultInt("redis.MaxActive", 1024)
	RedisClient = &redis.Pool{
		// 从配置文件获取maxidle以及maxactive,取不到则用后面的默认值
		MaxIdle:     MaxIdle,
		MaxActive:   MaxActive,
		IdleTimeout: 180 * time.Second,
		Dial: func() (redis.Conn, error) {
			c, err := redis.Dial("tcp", host, redis.DialPassword(pwd))
			if err != nil {
				return nil, err
			}
			return c, nil
		},
	}

}

2、存数据库
redis实现快速查找,最好是将查询条件作为key存入,以邮箱通讯录为例,需要按照邮箱号数字、姓名、拼音三种方式查询,因此需要分别以邮箱号、姓名、拼音为key建三张表,其中拼音查询需要引用第三方包"github.com/Lofanmi/pinyin-golang/pinyin"

type UserInfo struct {
	Name        string        //邮箱号,如"455*****"
	Displayname string   //用户名,如“张三”
	Mail        string          //邮箱,如“455*****@qq.com.cn”
}

beego框架中在model中定义用户数据结构UserInfo

func SetUserNameMail(userInfos map[int]models.Us
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值