Golang Redis lưu đơn giản

** Tại sao Redis và Golang** Hiện tại sự kết hợp giữa golang và redis là cực mạnh và rất phổ biến để tăng hiệu năng cho ứng dụng. Hầu như tất cả các công ty tuyển dụng đều yêu cầu về việc đã từng làm qua với redis. Dựng Redis local Dùng docker: Create

** Tại sao Redis và Golang**

Hiện tại sự kết hợp giữa golang và redis là cực mạnh và rất phổ biến để tăng hiệu năng cho ứng dụng. Hầu như tất cả các công ty tuyển dụng đều yêu cầu về việc đã từng làm qua với redis.

Dựng Redis local

  1. Dùng docker:
  • Create file docker name: Dockerfile và copy đoạn text sau vao
FROM redis:latest
  • Run lệnh:
docker build -t redis-viblo .
  • Kiểm tra image đã thành công:
docker images

tại trường repository xuất hiện redis là đã thành công.

  • Run image thành container:
docker run --name redis-viblo -p 6379:6379 -d redis-viblo
  • Kiểm tra container thành công:
docker ps

tại trường NAMES thấy redis-viblo là xong.

  1. Cài trực tiếp trên máy: thực hiện tuần tự từng lệnh.
brew install redis
brew services start redis
brew services info redis
redis-cli

=> kết quả:

Golang Connect

Init Redis

  1. Source code: sài source này lúc trước mình đã làm source
  2. Cài thư viện:
go get github.com/go-redis/redis/v8
  1. Kết nối đến redis:
func InitRedis() {
	rdb := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
	})
	fmt.Println(rdb)
	rdb.Set(context.Background(), "abc", "value-abc", time.Duration(time.Second*199))
}

=> sau khi connect thì lưu xuống redis key abc và value value-abc
4. Check redis-cli:

Get – Set thông qua api****

1. Set value
Code:

func Set(w http.ResponseWriter, req *http.Request) {
	cmdR := redislocal.RedisIn.Set(context.Background(), "set", "value-set", time.Duration(time.Second*199))
	valueResut := []byte("")
	if cmdR.Err() != nil {
		tem := []byte("redis set error n")
		valueResut = append(valueResut, tem...)
	} else {
		tem := []byte("redis set ok n")
		valueResut = append(valueResut, tem...)
	}
	w.Write(valueResut)
}

curl:

curl localhost:8100/set

=> redis set ok là set value vào redis ok, * redis-cli* execute *keys * sẽ thấy key là set

2. Get value
code:


func Get(w http.ResponseWriter, req *http.Request) {
	cmdR := redislocal.RedisIn.Get(context.Background(), "set")
	valueResut := []byte("Get ")
	if cmdR.Err() != nil {
		tem := []byte("redis get not found n")
		valueResut = append(valueResut, tem...)
	} else {
		value, err := cmdR.Bytes()
		if err != nil {
			tem := []byte("redis get err, err:")
			tem = append(tem, []byte(err.Error())...)
			valueResut = append(valueResut, tem...)
		} else {
			text := []byte("redis get ok, value:")
			text = append(text, value...)
			valueResut = append(valueResut, text...)
		}
	}
	line := []byte("n")
	valueResut = append(valueResut, line...)
	w.Write(valueResut)
}

curl:

curl localhost:8100/get
  • kết quả key tồn tại: Get redis get ok, value:value-set
  • key không tồn tại: Get redis get not found

SourceCode: https://github.com/ducnpdev/golang-demo

Tham Khao:
https://redis.io/docs/getting-started/installation/install-redis-on-mac-os/https://github.com/go-redis/redis

Nguồn: viblo.asia

Bài viết liên quan

9 Mẹo lập trình Web “ẩn mình” giúp tiết kiệm hàng giờ đồng hồ

Hầu hết các lập trình viên (kể cả những người giỏi) đều tốn thời gian x

Can GPT-4o Generate Images? All You Need to Know about GPT-4o-image

OpenAI‘s GPT-4o, introduced on March 25, 2025, has revolutionized the way we create visual con

Khi nào nên dùng main, section, article, header, footer, và aside trong HTML5

HTML5 đã giới thiệu các thẻ ngữ nghĩa giúp cấu trúc nội dung web một cách có

So sánh Webhook và API: Khi nào nên sử dụng?

Trong lĩnh vực công nghệ thông tin và phát triển phần mềm, Webhook và API là hai th