IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> GO-整合Redis -> 正文阅读

[大数据]GO-整合Redis

前言

关于Redis的介绍我这里不多介绍了,本文主要介绍Go如何操作Redis的。

安装第三方库

这里可以使用"github.com/garyburd/redigo/redis"或者"gopkg.in/redis.v4"
本文使用的是"github.com/garyburd/redigo/redis"来操作,二者的区别就是前者使用Do发送redis命令,后者就是帮我们封装成命令方法!

安装第三方库

go get github.com/garyburd/redigo/redis

代码编写

setStr

func setStr(conn redis.Conn) (res string){
	res, err := redis.String(conn.Do("Set", "go-redis-key", "go-redis-value"))
	if err != nil {
		fmt.Println("setStr err===>", err)
		return
	}
	fmt.Println("操作成功!!!")
	return res
}

getStr

func getStr(conn redis.Conn) (res string){
	res, err := redis.String(conn.Do("Get", "go-redis-key"))
	if err != nil {
		fmt.Println("getStr err===>", err)
		return
	}
	return res
}

setHSet

func setHSet(conn redis.Conn)  {

	_, err := conn.Do("HSet", "user1", "name", "tao")
	if err != nil {
		fmt.Println("setHSet name err===>", err)
		return
	}

	_, err = conn.Do("HSet", "user1", "age", 18)
	if err != nil {
		fmt.Println("setHSet age err===>", err)
		return
	}
	fmt.Println("setHSet 操作成功")
}

getHSet

func getHSet(conn redis.Conn) (res1 string,res2 int) {

	res1, err := redis.String(conn.Do("HGet",  "user1","name"))
	if err != nil {
		fmt.Println("getHSet name err===>", err)
		return
	}

	res2, err1 := redis.Int(conn.Do("HGet", "user1", "age"))
	if err1 != nil {
		fmt.Println("getHSet age err===>", err1)
		return
	}
	return res1, res2
}

setHMSet

func setHMSet(conn redis.Conn)  {
	_, err := conn.Do("HMSet", "user2", "name", "yyy","age",19)
	if err != nil {
		fmt.Println("setHMSet name err===>", err)
		return
	}
	fmt.Println("setHMSet 操作成功")
}

getHMGet

func getHMGet(conn redis.Conn) (res []string) {
	res, err := redis.Strings(conn.Do("HMGet",  "user2","name","age"))
	if err != nil {
		fmt.Println("getHSet age err===>", err)
		return
	}
	return res
}

mSet

func mSet(conn redis.Conn)  {
	_, err := conn.Do("MSet", "name", "yyy", "addr", "深圳")
	if err != nil {
		fmt.Println("MSet age err===>", err)
		return
	}
	fmt.Println("mSet 操作成功")
}

mGet

func mGet(conn redis.Conn) (res []string) {
	res, err := redis.Strings(conn.Do("MGet", "name", "addr"))
	if err != nil {
		fmt.Println("MGet age err===>", err)
		return
	}
	return res
}

测试main

import (
	"fmt"
	"github.com/garyburd/redigo/redis"
)

func main() {

	conn, err := redis.Dial(
		"tcp",
		"xxx.xxx.xxx.x:6379",
		redis.DialPassword("xxxxxxx"),
		redis.DialDatabase(int(0)))
	defer conn.Close()
	if err != nil {
		fmt.Print("redis err===>", err)
		return
	}

	fmt.Println("redis连接成功===>", conn)

	fmt.Println("<-----------setStr-start----------->")
	setStrRes := setStr(conn)
	fmt.Println("返回值:", setStrRes)
	fmt.Println("<-----------setStr-end----------->")
	ln()

	fmt.Println("<-----------setHSet-start----------->")
	setHSet(conn)
	fmt.Println("<-----------setHSet-end----------->")
	ln()

	fmt.Println("<-----------getHSet-start----------->")
	name, age := getHSet(conn)
	fmt.Println("name==>",name)
	fmt.Println("age===>",age)
	fmt.Println("<-----------getHSet-end----------->")
	ln()

	fmt.Println("<-----------setHMSet-start----------->")
	setHMSet(conn)
	fmt.Println("<-----------setHMSet-end----------->")
	ln()

	fmt.Println("<-----------getHMGet-start----------->")
	hmGetRes := getHMGet(conn)
	for _,v:=range hmGetRes{
		fmt.Println(v)
	}
	fmt.Println("<-----------getHMGet-end----------->")
	ln()

	fmt.Println("<-----------MSet-start----------->")
	mSet(conn)
	fmt.Println("<-----------MSet-end----------->")
	ln()

	fmt.Println("<-----------MGet-start----------->")
	mGetRes := mGet(conn)
	for _,v:=range mGetRes {
		fmt.Println(v)
	}
	fmt.Println("<-----------MGet-end----------->")
	ln()

}

测试结果
在这里插入图片描述

Go-Redis连接池

连接池这玩意我也不多介绍了,做过服务端其他技术栈的多少了解,废话不多说

声明连接池

import (
	"fmt"
	"github.com/garyburd/redigo/redis"
)

var pool *redis.Pool

初始化连接池

func init()  {
	pool=&redis.Pool{
		MaxIdle: 8,
		MaxActive: 0,
		IdleTimeout: 100,
		Dial: func() (redis.Conn, error) {
			return redis.Dial("tcp",
				"xxx.xxx.xxx.x:6379",
				redis.DialPassword("xxxxxxx"),
				redis.DialDatabase(int(0)))
		},
	}
}

测试

func main() {
	conn:=pool.Get()
	defer conn.Close()
	resStr := getStr(conn)
	fmt.Println(resStr)
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:16:11  更:2021-12-26 22:18:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:01:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码