目录
进入官网找到下载地址 Download | Redis
wget https://download.redis.io/releases/redis-6.2.4.tar.gz
tar -zvxf redis-6.2.4.tar.gz
若你不想在下载的目录安装 Redis,可以将 Redis 移动到特定目录安装,如 ‘/usr/local/’ 目录下,将文件夹更改目录,同时修改其名字为 redis:
mv /root/rredis-6.2.4 /usr/local/redis
cd /usr/local/redis-6.0.9
sudo make test
make PREFIX=/usr/local/redis install ('PREFIX=' 关键字作用是编译的时候用于指定程序存放的路径)
./bin/redis-server & ./redis.conf (&后台进程)
- package main
-
- import (
- "fmt"
-
- "github.com/gomodule/redigo/redis"
- )
-
- func main() {
- // 连接到 redis
- conn, err := redis.Dial("tcp", "127.0.0.1:6379")
- if err != nil {
- fmt.Println("Dial err = ", err)
- return
- }
- defer conn.Close()
- opString(conn)
- opHash(conn)
- }
-
- // opString 对String类型操作
- func opString(conn redis.Conn) {
- // 通过go向redis写入数据string [key-val]
- if _, err := conn.Do("set", "name", "xiaoming"); err != nil {
- fmt.Println("Set err = ", err)
- return
- }
- // 通过go向redis读取数据string [key-val]
- r, err := redis.String(conn.Do("Get", "name"))
- if err != nil {
- fmt.Println("redis set err = ", err)
- return
- }
- fmt.Println("读取数据:", r)
-
- // 通过go向redis写入数据string [key-val] 多值
- replay, err := conn.Do("mset", "name1", "xiaoming1", "name2", "xiaoming2")
- fmt.Println("replay:", replay)
- if err != nil {
- fmt.Println("Set err = ", err)
- return
- }
- // 通过go向redis读取数据string [key-val] 多值
- rs, err := redis.Strings(conn.Do("mGet", "name", "name1"))
- if err != nil {
- fmt.Println("redis set err = ", err)
- return
- }
- fmt.Println("读取数据:", rs)
- // 通过go向redis读取数据string [key-val]
- if _, err = redis.String(conn.Do("GETSET", "name", "xiaohong")); err != nil {
- fmt.Println("redis set err = ", err)
- return
- }
- // 通过go向redis读取数据string [key-val]
- r, err = redis.String(conn.Do("Get", "name"))
- if err != nil {
- fmt.Println("redis set err = ", err)
- return
- }
- fmt.Println("GETSET读取数据:", r)
- if _, err := conn.Do("incr", "namex"); err != nil {
- fmt.Println("redis set err = ", err)
- return
- }
- // incrby(自增指定数字)
- if _, err := conn.Do("incrby", "namex", 2); err != nil {
- fmt.Println("redis set err = ", err)
- return
- }
- count, err := redis.String(conn.Do("Get", "namex"))
- if err != nil {
- fmt.Println("redis set err = ", err)
- return
- }
- fmt.Println("自增指定数字", count)
- // decrby(自减指定数字)
- if _, err := conn.Do("decrby", "namex", 2); err != nil {
- fmt.Println("redis set err = ", err)
- return
- }
- count, err = redis.String(conn.Do("Get", "namex"))
- if err != nil {
- fmt.Println("redis set err = ", err)
- return
- }
- fmt.Println("自减指定数字", count)
- }
-
- // opHash 哈希
- func opHash(conn redis.Conn) {
- if _, err := conn.Do("HMSet", "user", "name", "john", "age", 100); err != nil {
- fmt.Println("redis hmset err = ", err)
- return
-
- }
- r1, err := redis.Strings(conn.Do("HMGet", "user", "name", "age"))
- if err != nil {
- fmt.Println("redis hmget err = ", err)
- return
- }
-
- for i, v := range r1 {
- fmt.Printf("r[%d] = %v \n", i, v)
- }
- }
参考文档:
Go-Redis(二)gopkg-redis基本操作_gopkg.in/redi_Kevin_cai09的博客-CSDN博客
golang go-redis和redigo的不同用法_go语言 redigo和redis-go_enjoy_sun_moon的博客-CSDN博客