【db】【go】Redis基础入门/Git安装

1.redis是NoSQL数据库,不是传统的关系型db
REmote DIctionary Server
性能很强。单机能达到15w qps
通常是适合做缓存,也可以持久化

基于内存运行,并支持持久化,也称为数据结构服务器

2.下载后直接解压,会得到server.exe and cli.exe
下载地址
双击运行,不需要安装
在这里插入图片描述

3.使用基础
先打开server.exe
再打开cli.exe
指令参考
redisdoc.com

4.redis默认有16个数据库 0-15 默认用0号库
5.用
cli.exe
flushdb 清空db
flushall 清空16个库

6.string
最基本的类型,一个key对应一个value
是二进制安全的,除了放文本,还能放图片等。
string value 最大是512M

设置时无法正常显示中文
在这里插入图片描述
大概是电脑默认用gbk编码。但是不影响程序使用

set【如果存在就是修改,不存在就是添加】/get/del

setex设置存在时间(s)
在这里插入图片描述

mset、mget一次操作多个值
在这里插入图片描述
7.Hash
redis hash是一个string类型的field和value的映射表
适合用于存储对象
使用hset、hget
在这里插入图片描述
查hgetall 删hdel
hmset、hmget、hlen、hexists
在这里插入图片描述
8.list
是简单的字符串列表。按照插入顺序排序。可以添加元素到头部或尾部

本质是一个链表,元素有序,元素的值可以重复
在这里插入图片描述
crud指令:
lpush/rpush/lrange/lpop/rpop/del

lrange key start stop
以0表示第一个,以此类推,也可以用-1表示最右边的元素,-2表示倒数第二个……

lindex llen
如果值全部移除,对应的key也消失了

9.set
string类型的无序集合。元素的值不能重复
crud:
sadd、smembers、sismember、srem

10.安装第三方的开源redis库
redis库

在GOPATH路径下执行安装指令:Install Redigo using the “go get” command:

go get github.com/gomodule/redigo

注意:安装前,确保已经安装并配置了git

执行过后可以看到,src下多了一个github.com的文件
在这里插入图片描述
这就算是装完了

11.安装配置git
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

1)安装git,配置路径
Git 各平台安装包下载地址为:http://git-scm.com/downloads
当前版本(2.28.0) 64-bit version of Git for Windows
下载图标
在这里插入图片描述
在这里插入图片描述
默认是vim做text editor,说是推荐换成别的,那我就换成vscode吧
在这里插入图片描述
在这里插入图片描述
一路next过去

2)安装后,配置git的环境变量Path
添加一个xxx\Git\bin
在这里插入图片描述

3)测试
到GOPATH执行
结果如下

GOPATH>git --version
git version 2.28.0.windows.1

12.go连接到redis

package main
import (
	"fmt"
	"github.com/gomodule/redigo/redis"
)

func main() {
	//通过go向redis写读数据
	//连接到redis
	conn, err := redis.Dial("tcp", 
		"localhost:6379")
	if err != nil {
		fmt.Println("redis.Dial err =", err)
		return
	}
	fmt.Println("conn success", conn)
}

13.go添加获取redis中的string

	//通过go向redis写读数据
	//连接到redis
	conn, err := redis.Dial("tcp", 
		"localhost:6379")
	if err != nil {
		fmt.Println("redis.Dial err =", err)
		return
	}
	defer conn.Close() //及时关闭

	//写入数据
	_, err = conn.Do("Set", "name", "丸子")
	if err != nil {
		fmt.Println("set err =", err)
		return
	}

	//读取数据
	// 返回一个接口r要转成对应的类型
	r, err := redis.String(conn.Do("Get", "name"))
	if err != nil {
		fmt.Println("get err =", err)
		return
	}
	fmt.Println(r)
	fmt.Println("do ok")

14.操作hash
一个一个放

	conn, err := redis.Dial("tcp", 
		"localhost:6379")
	if err != nil {
		fmt.Println("redis.Dial err =", err)
		return
	}
	defer conn.Close() //及时关闭

	//写入数据
	_, err = conn.Do("HSet", "user01", "name", "丸子")
	if err != nil {
		fmt.Println("hset err =", err)
		return
	}
	_, err = conn.Do("HSet", "user01", "age", 15)
	if err != nil {
		fmt.Println("hset err =", err)
		return
	}

	//读取数据
	// 返回一个接口r要转成对应的类型
	r1, err := redis.String(conn.Do("HGet", "user01", "name"))
	if err != nil {
		fmt.Println("hget err =", err)
		return
	}
	r2, err := redis.Int(conn.Do("HGet", "user01", "age"))
	if err != nil {
		fmt.Println("hget err =", err)
		return
	}
	fmt.Printf("r1 = %v\nr2 = %v\n", r1, r2)

15.批量操作hash

	conn, err := redis.Dial("tcp", 
		"localhost:6379")
	if err != nil {
		fmt.Println("redis.Dial err =", err)
		return
	}
	defer conn.Close() //及时关闭

	//写入数据
	_, err = conn.Do("HMSet", "user02", "name", "John",
		"age", 33)
	if err != nil {
		fmt.Println("hmset err =", err)
		return
	}

	//读取数据
	// 返回一个接口r要转成对应的类型
	r, err := redis.Strings(conn.Do("HMGet", "user02", "name", "age"))
	if err != nil {
		fmt.Println("hmget err =", err)
		return
	}
	fmt.Printf("r = %v\n", r)
	for i, v := range r {
		fmt.Printf("r[%d] = %v\n", i, v)
	}

16.go还可以通过redis连接池操作redis
可以节省临时获取redis连接的时间

//定义一个全局的pool
var pool *redis.Pool
//启动程序时 初始化pool
func init() {
	pool = &redis.Pool{
		MaxIdle: 8, // 最大空闲连接
		MaxActive: 0, //最大连接数 0为无限制
		IdleTimeout: 100, //最大空闲时间
		Dial: func() (redis.Conn, error) {
			return redis.Dial("tcp", 
				"localhost:6379")
		},
	}
}

func main() {
	//从pool中取出一个连接
	conn := pool.Get()
	defer conn.Close()
	_, err := conn.Do("Set", "name", "Xiaox")
	if err != nil {
		fmt.Println("do error,", err)
	}

	r, err := redis.String(conn.Do("Get", "name"))
	if err != nil {
		fmt.Println("do error,", err)
	}
	fmt.Println(r)
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值