不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • Langchain
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • Langchain
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • GO基础

  • 面向对象

  • 并发编程

  • 常用库

  • 数据库操作

    • GORM

    • sqlx

    • database-sql

    • GORMv2

    • go-redis

      • 01.go-redis包
        • 01.golang操作redis
          • 1.1 安装
          • 1.2 基本使用
          • 1.3 Pipeline
        • 02.连接集群
          • 2.1 连接Redis哨兵模式
          • 2.2 连接Redis集群
      • 02.go-redis基本操作
      • 03.go-redis分布式锁
    • redigo

    • elastic

  • Beego框架

  • Beego商城

  • GIN框架

  • GIN论坛

  • 微服务

  • 设计模式

  • Go
  • 数据库操作
  • go-redis
xiaonaiqiang
2021-05-28
目录

01.go-redis包

# 01.golang操作redis

  • 模块: (opens new window)
  • 文档: (opens new window)
  • 参考博客 (opens new window)

# 1.1 安装

  • 初始化文件夹
c:\aaa>  mkdir testredis
c:\aaa\testredis>  go mod init testredis
1
2
  • 安装
go get github.com/go-redis/redis/v8
1

# 1.2 基本使用

package main
import (
	"context"
	"fmt"
	"github.com/go-redis/redis/v8"
	"time"
)

var ctx = context.Background()

func main() {
	//连接redis数据库
	rdb := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
	})

	_, err := rdb.Ping(ctx).Result()
	if err != nil {
		fmt.Println("redis数据库连接失败")
	} else {
		fmt.Println("redis数据库连接成功...")
	}

	//1、操作字符串
	err1 := rdb.Set(ctx, "username", "lisi", 0).Err()
	if err1 != nil {
		fmt.Println("设置数据失败")
	}

	username, _ := rdb.Get(ctx, "username").Result()
	fmt.Println(username)

	//2、操作列表(list)
	rdb.LPush(ctx, "hobby", "吃饭")
	rdb.LPush(ctx, "hobby", "睡觉")
	rdb.RPush(ctx, "hobby", "写代码")

	hobby, _ := rdb.LRange(ctx, "hobby", 0, -1).Result()
	fmt.Println(hobby)

	//3、操作集合(set)

	rdb.SAdd(ctx, "hobby", "吃饭", "睡觉", "吃饭")
	rdb.SAdd(ctx, "hobby", "写代码")
	hobby, _ := rdb.SMembers(ctx, "hobby").Result()
	fmt.Println(hobby)

	//4、Redis 哈希
	err3 := rdb.HMSet(ctx, "userinfo", map[string]interface{}{
		"username": "张三",
		"age":      "20",
	}).Err()

	if err3 != nil {
		fmt.Println(err3)
	}
	userinfo, _ := rdb.HGetAll(ctx, "userinfo").Result()

	fmt.Println(userinfo)

	fmt.Println(userinfo["username"])

	//5、设置过期时间
	rdb.Set(ctx, "age", 20, time.Second*10)
	rdb.LPush(ctx, "hobby", "吃饭")
	rdb.Expire(ctx, "hobby", time.Second*10)

	//6、删除数据
	rdb.Set(ctx, "age", 20, 0)
	rdb.Del(ctx, "age")
	rdb.LPush(ctx, "hobby", "吃饭")
	rdb.FlushAll(ctx)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

# 1.3 Pipeline

  • Pipeline 主要是一种网络优化。
  • 它本质上意味着客户端缓冲一堆命令并一次性将它们发送到服务器。
  • 这些命令不能保证在事务中执行。
  • 这样做的好处是节省了每个命令的网络往返时间(RTT)。

# 02.连接集群

# 2.1 连接Redis哨兵模式

func initClient()(err error){
	rdb := redis.NewFailoverClient(&redis.FailoverOptions{
		MasterName:    "master",
		SentinelAddrs: []string{"x.x.x.x:26379", "xx.xx.xx.xx:26379", "xxx.xxx.xxx.xxx:26379"},
	})
	_, err = rdb.Ping().Result()
	if err != nil {
		return err
	}
	return nil
}
1
2
3
4
5
6
7
8
9
10
11

# 2.2 连接Redis集群

func initClient()(err error){
	rdb := redis.NewClusterClient(&redis.ClusterOptions{
		Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},
	})
	_, err = rdb.Ping().Result()
	if err != nil {
		return err
	}
	return nil
}
1
2
3
4
5
6
7
8
9
10
上次更新: 2024/3/13 15:35:10
04.其他
02.go-redis基本操作

← 04.其他 02.go-redis基本操作→

最近更新
01
05.快递Agent智能体
06-04
02
200.AI Agent核心概念
06-04
03
105.Agent智能体梳理
06-04
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式