redis安装与使用

目录

redis安装

redis下载

解压安装redis

[移动 Redis 目录](#移动 Redis 目录)

编译

安装

启动redis

go中使用redis


redis安装

redis下载

进入官网找到下载地址 Download | Redis

复制代码
wget https://download.redis.io/releases/redis-6.2.4.tar.gz

解压安装redis

tar -zvxf redis-6.2.4.tar.gz

移动 Redis 目录

若你不想在下载的目录安装 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=' 关键字作用是编译的时候用于指定程序存放的路径)

启动redis

./bin/redis-server & ./redis.conf (&后台进程)

go中使用redis

Go 复制代码
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博客

Redis 命令

相关推荐
harmony&31 分钟前
ETCD 存储系统实战:从单节点部署到 Kubernetes 高可用集群
数据库·kubernetes·etcd
2601_9620664941 分钟前
【玩转全栈】----Django模板的继承
数据库·django·sqlite
一只小bit1 小时前
Redis哨兵机制、主从复制与集群搭建与维护
数据库·redis·bootstrap
zlwool8 小时前
图纸管理选型避坑指南
数据库·erp·设备erp·非标机械
智购科技无人售货机厂家8 小时前
2026自动售货机制冷系统维护指南:从散热器清洁到压缩机换油的工程实践~YH
运维·redis·物联网·缓存·架构
小灰灰搞电子9 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
软件聚导航11 小时前
「聚小软 AI 助手」技术升级:从数据库检索到 RAG 知识库问答
前端·数据库·mysql·微信小程序·小程序·ai编程·rag
学习星球12 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
GoppViper12 小时前
RDF资源描述框架深度解析:语义Web的数据基石与实战逻辑
前端·数据库
2601_9621741712 小时前
Redis 简介
数据库·redis·wpf