1. 键命令
键命令用于管理 Redis 中的键。
常用命令
DEL key
:删除一个键。EXISTS key
:检查键是否存在。EXPIRE key seconds
:设置键的过期时间。TTL key
:获取键的剩余生存时间。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Set key
rdb.Set(ctx, "mykey", "myvalue", 0)
// Check if key exists
exists, _ := rdb.Exists(ctx, "mykey").Result()
fmt.Println("Key exists:", exists)
// Set key expiration
rdb.Expire(ctx, "mykey", 10)
// Get TTL
ttl, _ := rdb.TTL(ctx, "mykey").Result()
fmt.Println("TTL:", ttl)
}
2. 字符串命令
字符串命令用于操作 Redis 的字符串类型。
常用命令
GET key
:获取键的值。SET key value
:设置键的值。INCR key
:将键的值递增1。APPEND key value
:在键的值后追加数据。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Set key
rdb.Set(ctx, "mykey", "myvalue", 0)
// Get key
val, _ := rdb.Get(ctx, "mykey").Result()
fmt.Println("Value:", val)
// Increment key
rdb.Set(ctx, "counter", 10, 0)
rdb.Incr(ctx, "counter")
counter, _ := rdb.Get(ctx, "counter").Result()
fmt.Println("Counter:", counter)
// Append to key
rdb.Append(ctx, "mykey", "append")
val, _ = rdb.Get(ctx, "mykey").Result()
fmt.Println("Appended value:", val)
}
3. 列表命令
列表命令用于操作 Redis 的列表类型。
常用命令
LPUSH key value
:在列表头部插入一个元素。RPUSH key value
:在列表尾部插入一个元素。LPOP key
:移除并返回列表的头元素。RPOP key
:移除并返回列表的尾元素。LRANGE key start stop
:获取列表的部分元素。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Push elements to list
rdb.LPush(ctx, "mylist", "value1")
rdb.RPush(ctx, "mylist", "value2")
// Pop elements from list
lpop, _ := rdb.LPop(ctx, "mylist").Result()
fmt.Println("LPOP:", lpop)
rpop, _ := rdb.RPop(ctx, "mylist").Result()
fmt.Println("RPOP:", rpop)
// Get range of elements from list
rdb.LPush(ctx, "mylist", "value1", "value2", "value3")
values, _ := rdb.LRange(ctx, "mylist", 0, -1).Result()
fmt.Println("List values:", values)
}
4. 集合命令
集合命令用于操作 Redis 的集合类型。
常用命令
SADD key value
:向集合中添加一个元素。SREM key value
:从集合中移除一个元素。SMEMBERS key
:返回集合中的所有元素。SISMEMBER key value
:检查元素是否在集合中。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Add elements to set
rdb.SAdd(ctx, "myset", "value1")
rdb.SAdd(ctx, "myset", "value2")
// Remove element from set
rdb.SRem(ctx, "myset", "value1")
// Get all elements in set
members, _ := rdb.SMembers(ctx, "myset").Result()
fmt.Println("Set members:", members)
// Check if value is in set
isMember, _ := rdb.SIsMember(ctx, "myset", "value2").Result()
fmt.Println("Is value2 in set:", isMember)
}
5. 有序集合命令
有序集合命令用于操作 Redis 的有序集合类型。
常用命令
ZADD key score value
:向有序集合中添加一个元素及其分数。ZREM key value
:从有序集合中移除一个元素。ZRANGE key start stop
:按索引范围返回有序集合中的元素。ZSCORE key value
:返回元素的分数。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Add elements to sorted set
rdb.ZAdd(ctx, "myzset", &redis.Z{Score: 1, Member: "value1"})
rdb.ZAdd(ctx, "myzset", &redis.Z{Score: 2, Member: "value2"})
// Remove element from sorted set
rdb.ZRem(ctx, "myzset", "value1")
// Get elements in range
values, _ := rdb.ZRange(ctx, "myzset", 0, -1).Result()
fmt.Println("Sorted set values:", values)
// Get score of element
score, _ := rdb.ZScore(ctx, "myzset", "value2").Result()
fmt.Println("Score of value2:", score)
}
6. 哈希命令
哈希命令用于操作 Redis 的哈希类型。
常用命令
HSET key field value
:设置哈希字段的值。HGET key field
:获取哈希字段的值。HDEL key field
:删除哈希字段。HGETALL key
:获取哈希中的所有字段和值。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Set hash fields
rdb.HSet(ctx, "myhash", "field1", "value1")
rdb.HSet(ctx, "myhash", "field2", "value2")
// Get hash field
val, _ := rdb.HGet(ctx, "myhash", "field1").Result()
fmt.Println("Field1 value:", val)
// Get all fields and values in hash
allFields, _ := rdb.HGetAll(ctx, "myhash").Result()
fmt.Println("All fields and values:", allFields)
// Delete hash field
rdb.HDel(ctx, "myhash", "field1")
}
7. 事务命令
Redis 事务通过 MULTI, EXEC, DISCARD 和 WATCH 命令实现。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Start a transaction
err := rdb.Watch(ctx, func(tx *redis.Tx) error {
_, err := tx.TxPipelined(ctx, func(pipe redis.Pipeliner) error {
pipe.Set(ctx, "key", "value", 0)
pipe.Incr(ctx, "counter")
return nil
})
return err
}, "key", "counter")
if err != nil {
fmt.Println("Transaction failed:", err)
} else {
fmt.Println("Transaction succeeded")
}
}
8. 脚本命令
Redis 脚本使用 Lua 语言编写,允许在服务器端执行脚本。
常用命令
EVAL script numkeys key [key ...] arg [arg ...]
:执行 Lua 脚本。EVALSHA sha1 numkeys key [key ...] arg [arg ...]
:通过哈希执行 Lua 脚本。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Lua script to increment a key and return new value
script := "return redis.call('INCR', KEYS[1])"
val, err := rdb.Eval(ctx, script, []string{"counter"}).Result()
if err != nil {
fmt.Println("Script error:", err)
} else {
fmt.Println("New counter value:", val)
}
}
9. 连接命令
连接命令用于管理与 Redis 服务器的连接。
常用命令
PING
:检查服务是否运行。AUTH password
:认证连接。SELECT index
:切换数据库。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Ping server
pong, err := rdb.Ping(ctx).Result()
if err != nil {
fmt.Println("Ping error:", err)
} else {
fmt.Println("Ping response:", pong)
}
// Authenticate (if needed)
// err = rdb.Auth(ctx, "yourpassword").Err()
// if err != nil {
// fmt.Println("Auth error:", err)
// }
// Select database
err = rdb.Select(ctx, 1).Err()
if err != nil {
fmt.Println("Select DB error:", err)
}
}
10. 服务器命令
服务器命令用于管理和监控 Redis 服务器。
常用命令
INFO
:获取服务器信息和统计。CONFIG GET parameter
:获取服务器配置。CONFIG SET parameter value
:设置服务器配置。FLUSHDB
:清空当前数据库。FLUSHALL
:清空所有数据库。
Go 代码示例:
package main
import (
"fmt"
"github.com/go-redis/redis/v8"
"context"
)
func main() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// Get server info
info, err := rdb.Info(ctx).Result()
if err != nil {
fmt.Println("Info error:", err)
} else {
fmt.Println("Server info:", info)
}
// Flush current database
err = rdb.FlushDB(ctx).Err()
if err != nil {
fmt.Println("FlushDB error:", err)
} else {
fmt.Println("Database flushed")
}
}