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