https://redis.io/commands/set/
SET key value [NX | XX] [GET] [EX seconds | PX milliseconds |
EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
EX
seconds -- 지정된 만료 시간을 초 단위(양의 정수)로 설정한다.PX
milliseconds -- 지정된 만료 시간을 밀리초(양의 정수) 단위로 설정한다.EXAT
timestamp-seconds -- 키가 만료되는 지정된 유닉스 시간을 초 단위(양의 정수)로 설정한다.PXAT
timestamp-milliseconds -- 키가 만료되는 지정된 유닉스 시간을 밀리초(양의 정수) 단위로 설정한다.NX
-- 키가 이미 존재하지 않는 경우에만 값 설정한다.XX
-- 키가 이미 존재하는 경우에만 값 설정한다.KEEPTTL
-- 키와 연관된 생존 시간을 유지한다.GET
-- 키에 저장된 이전 문자열을 반환하거나, 키가 존재하지 안으면 nil을 반환한다. 키에 저장된 값이 문자열이 아닌 경우 오류가 반환되고 SET이 중단된다.참고:
SET
명령 옵션은SETNX
,SETEX
,PSETEX
,GETSET
을 대체할 수 있으므로, 향후 버전의 Redis에서는 이러한 명령이 더 이상 사용되지 않고 제거될 수 있다.
redis> SET mykey "Hello"
"OK"
redis> GET mykey
"Hello"
redis> SET anotherkey "will expire in a minute" EX 60
"OK"
redis> GET anotherkey
(nil)
package example_commands_test
import (
"context"
"fmt"
"github.com/redis/go-redis/v9"
)
func ExampleClient_Set_and_get() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})
err := rdb.Set(ctx, "bike:1", "Process 134", 0).Err()
if err != nil {
panic(err)
}
fmt.Println("OK")
value, err := rdb.Get(ctx, "bike:1").Result()
if err != nil {
panic(err)
}
fmt.Printf("The name of the bike is %s", value)
}
Redis의 대표적인 용도는 캐싱이다. 만료 옵션을 사용하여 오래된 데이터를 캐싱해 유지하는 것을 막고 메모리가 부족하지 않도록 데이터를 삭제할 수 있다.
뉴스 헤드라인 API 캐싱
Redis의 SET 명령어를 사용하면 string값을 key-value 형태로 저장할 수 있으며, 다양한 옵션을 통해 만료 시간을 설정하거나 조건에 따라 동작을 변경할 수 있다. 이를 통해 데이터를 효율적으로 관리하고 캐싱하는 등의 다양한 용도로 활용할 수 있다.