コード例 #1
0
ファイル: url.go プロジェクト: Soulou/GoShortUrl
func (url Url) IncCounter() {
	redis_client, e := helpers.GetRedisClient()
	if e != nil {
		return nil, e
	}
	redis_client.Inc(fmt.Sprintf("visits:%s", url.Digest))
}
コード例 #2
0
ファイル: url.go プロジェクト: Soulou/GoShortUrl
func (u Url) Save() error {
	redis_client, e := helpers.GetRedisClient()
	if e != nil {
		return e
	}
	redis_client.Set(u.Digest[0:5], []byte(u.Href))
	redis_client.Set(fmt.Sprintf("%s_cnt", u.Digest[0:5]), 0)
	redis_client.Rpush("digests", []byte(u.Digest[0:5]))

	return nil
}
コード例 #3
0
ファイル: url.go プロジェクト: Soulou/GoShortUrl
func FindUrl(digest string) (*Url, error) {
	redis_client, e := helpers.GetRedisClient()
	if e != nil {
		return nil, e
	}

	href, e := redis_client.Get(digest)
	if e != nil {
		return nil, e
	}
	url := Url{string(href), digest}

	return &url, nil
}
コード例 #4
0
ファイル: url.go プロジェクト: Soulou/GoShortUrl
func FindUrls() ([]Url, error) {
	redis_client, e := helpers.GetRedisClient()
	if e != nil {
		return nil, e
	}

	nb_urls, e := redis_client.Llen("digests")
	if e != nil {
		return nil, e
	}

	urls := make([]Url, nb_urls)
	for i := int64(0); i < nb_urls; i++ {
		digest, e := redis_client.Lindex("digests", i)
		if e != nil {
			return nil, e
		}

		url_bytes, e := redis_client.Get(fmt.Sprintf("%x", digest))
		url := fmt.Sprintf("%s", url_bytes)
		urls[i] = Url{url, fmt.Sprintf("%x", digest)}
	}
	return urls[:], nil
}