redis+go,为什么使用redis?

本文介绍了Redis作为KV数据库的基本概念、工作原理,以及在如缓存系统、计数场景、排行榜、队列和地理位置查询中的应用。同时给出了Go语言操作Redis的代码实例,展示了ZSET、LIST和地理位置索引等操作。
摘要由CSDN通过智能技术生成

Redis

一、redis是什么、能干什么、主要功能和工作原理的详细讲解

KV数据库

一个开源的内存数据库

Redis的好处:

  1. 缓存系统,减轻主数据库的压力
  2. 计数场景,比如微博,抖音中的关注数和粉丝数
  3. 热门排行榜,需要排序的场景特别适合使用ZSET
  4. 利用LIST可以实现队列的功能
  5. 利用 HyperLogLog 统计UV、PV等数据
  6. 使用 geospatial index 进行地理位置相关查询

Redis:https://blog.csdn.net/H1727548/article/details/132512038

二、go-redis操作实例

网址:Go语言操作Redis | 李文周的博客 (liwenzhou.com)

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/redis/go-redis/v9"
)

var rdb *redis.Client

func init() {
	// 连接到 Redis 服务器
	rdb = redis.NewClient(&redis.Options{
		Addr:     "8.130.30.140:6379",
		Password: "", // 如果有密码,请提供密码
		DB:       0,
	})
}

func main() {
	fmt.Println("zsetDemo.")
	zsetDemo()
}

// zsetDemo 操作zset示例
func zsetDemo() {
	// key
	zsetKey := "rank"
	// value
	// 注意:v8版本使用[]*redis.Z;此处为v9版本使用[]redis.Z
	languages := []redis.Z{
		{Score: 90.0, Member: "Golang"},
		{Score: 98.0, Member: "Java"},
		{Score: 95.0, Member: "Python"},
		{Score: 97.0, Member: "JavaScript"},
		{Score: 99.0, Member: "C/C++"},
	}
	ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond)
	defer cancel()

	// ZADD
	err := rdb.ZAdd(ctx, zsetKey, languages...).Err()
	if err != nil {
		fmt.Printf("zadd failed, err:%v\n", err)
		return
	}
	fmt.Println("zadd success")

	// 把Golang的分数加10
	newScore, err := rdb.ZIncrBy(ctx, zsetKey, 10.0, "Golang").Result()
	if err != nil {
		fmt.Printf("zincrby failed, err:%v\n", err)
		return
	}
	fmt.Printf("Golang's score is %f now.\n", newScore)

	// 取分数最高的3个
	ret := rdb.ZRevRangeWithScores(ctx, zsetKey, 0, 2).Val()
	for _, z := range ret {
		fmt.Println(z.Member, z.Score)
	}

	// 取95~100分的
	op := &redis.ZRangeBy{
		Min: "95",
		Max: "100",
	}
	ret, err = rdb.ZRangeByScoreWithScores(ctx, zsetKey, op).Result()
	if err != nil {
		fmt.Printf("zrangebyscore failed, err:%v\n", err)
		return
	}
	for _, z := range ret {
		fmt.Println(z.Member, z.Score)
	}
}
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

席万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值