Amazon Redis Session 是一个用于亚马逊爬虫存储 Cookies 的库,基于 Redis 实现。它提供了方便的接口来管理和存储爬虫的 Session 数据。
- 基于 Redis 实现高效的 Session 存储
 - 支持多种操作,包括设置、获取和删除 Session
 - 适用于亚马逊爬虫的 Cookie 管理
 
请确保已安装 Go 语言环境和 Redis 服务器。
go get github.com/amzapi/amazon-redis-session以下是一个简单的使用示例:
package main
import (
    "context"
    "fmt"
    "log"
	
    "github.com/amzapi/amazon-redis-session"
)
func main() {
    // 创建 Redis 客户端
    cfg := &amazonsession.Config{
        Addr:     "localhost:6379",
        Password: "",
        Db:       0,
    }
    sessionManager, err := amazonsession.NewAmazonSession(cfg)
    if err != nil {
        log.Fatalf("无法连接到 Redis: %v", err)
    }
    ctx := context.Background()
    // 创建一个新的 Session
    session := &amazonsession.Session{
        Country: "US",
        // 其他字段根据需要填写
    }
    err = sessionManager.PushSession(ctx, session)
    if err != nil {
        log.Fatalf("设置 Session 失败: %v", err)
    }
    // 获取一个随机 Session
    randomSession, err := sessionManager.GetRandomSession(ctx, "US")
    if err != nil {
        log.Fatalf("获取 Session 失败: %v", err)
    }
    fmt.Printf("Random Session: %+v\n", randomSession)
}你可以通过以下参数配置 Redis 客户端:
Addr: Redis 服务器地址,例如 "localhost:6379"Password: Redis 服务器密码(如果有)Db: Redis 数据库编号
创建一个新的 AmazonSession 实例。
func NewAmazonSession(cfg *Config) (*AmazonSession, error)将一个新的 Session 存储到 Redis。
func (j *AmazonSession) PushSession(ctx context.Context, session *Session) error获取一个随机的 Session。
func (j *AmazonSession) GetRandomSession(ctx context.Context, country string) (*Session, error)从 Redis 中弹出一个 Session 并将其从列表中移除。
func (j *AmazonSession) PopSession(ctx context.Context, country string) (*Session, error)根据国家和 sessionID 获取一个 Session。
func (j *AmazonSession) GetSession(ctx context.Context, country, sessionID string) (*Session, error)获取特定国家的所有 Session ID。
func (j *AmazonSession) GetCountrySessionIDs(ctx context.Context, country string) ([]string, error)获取所有国家的所有 Session。
func (j *AmazonSession) GetAllSessions(ctx context.Context) ([]*Session, error)列出特定国家的 Session,支持分页。
func (j *AmazonSession) ListSession(ctx context.Context, country string, pgn Pagination) ([]*Session, error)列出特定国家的所有 Session。
func (j *AmazonSession) ListCountrySession(ctx context.Context, country string) ([]*Session, error)更新特定 Session 的最后检查时间戳。
func (j *AmazonSession) UpdateLastCheckedTimestamp(ctx context.Context, country, sessionID string) error删除一个 Session。
func (j *AmazonSession) DeleteSession(ctx context.Context, country, sessionID string) error清理过期或使用次数超过阈值的 Session。
func (j *AmazonSession) CleanupSessions(ctx context.Context, timeDiffThreshold int64, usageCountThreshold int64) error欢迎贡献代码!请遵循以下步骤进行贡献:
- Fork 本仓库
 - 创建你的特性分支 (
git checkout -b feature/AmazingFeature) - 提交你的修改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
 
该项目使用 MIT 许可证。详情请参阅 LICENSE 文件。
