DevOps运维技术栈

golang从redis中分页获取列表数据

package main

import (
	"fmt"
	"github.com/go-redis/redis"
	"strconv"
)

func main() {
	//redis地址,密码,数据库
	redisc, err := RedisInit("192.168.2.80:6379","123456",12)
	if err != nil {
		fmt.Println(err)
		return
	}

	//添加模拟数据100条
	//datacCount, err := AddData(redisc, 100)
	//if err != nil {
	//	fmt.Println(err)
	//	return
	//}
	//fmt.Printf("成功添加%d条数据", datacCount)

	count, err := redisc.LLen("aticle1").Result()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(count)

	//每页多少条数据
	pageSize := 10
	//第几页
	page := 5

	start := page * pageSize
	end := start + pageSize - 1

	listData, err := redisc.LRange("aticle1", int64(start), int64(end)).Result()
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(listData)

}

// 初始化redis连接
func RedisInit(addr, pass string, db int) (*redis.Client, error) {
	redisdb := redis.NewClient(&redis.Options{
		Addr:     addr,
		Password: pass,
		DB:       db,
		PoolSize: 10,
	})
	_, err := redisdb.Ping().Result()
	if err != nil {
		return nil, err
	}
	return redisdb, nil

}

// 添加模拟数据
func AddData(client *redis.Client, n int) (count int64, err error) {
	var dataSlice []string
	for i := 0; i < n; i++ {
		dataSlice = append(dataSlice, strconv.Itoa(i))
	}

	count, err = client.RPush("aticle1", dataSlice).Result()

	return
}
退出移动版