Redis
Redis里存储的数据是key、value键值对的格式,如果我们同时有多个请求访问redis拿数据,但同时要保证数据不重复,这里我们采用set形式(value不重复,string类型的key值对应数组类型的value,数组里可放置多个string类型的数据)
package ipv4pool
import (
"context"
"fmt"
"time"
"amber/db"
"github.com/go-redis/redis"
"github.com/sirupsen/logrus"
)
var Pool *ipv4Pool
const (
ipv4PoolKey = "ipv4_pool" //设置redis的key
ipv4Capacity = 255 //设置redis里value的最大长度
getTimeout = 5 * time.Second //超时时间
expire = 24 //过期时间
)
type ipv4Pool struct {
cap int
client *redis.Client
isUpdate chan bool
ctx context.Context
}
// 初始化redis数据库
func NewCache(addr string) (*redis.Client, error) {
c := redis.NewClient(&redis.Options{
Addr: addr})
_, err := c.Ping().Result()
if err != nil {
return nil, err
}
return c, err
}
// 初始化连接池pool
func Init(addr string, ctx context.Context) (err error) {
c, err := NewCache(addr)
if err != nil {
logrus.WithError(err).Error("can not init ipv4 pool redis client")
return err
}
Pool = &ipv4Pool{
client

最低0.47元/天 解锁文章
5534

被折叠的 条评论
为什么被折叠?



