安装与配置Redis客户端库
在Go语言中操控Redis需依赖外部库,建议采用
go-redis
库。可通过下列指令安装最新版本:
go get github.com/redis/go-redis/v9
在项目中引用该库并建立客户端链接:
import "github.com/redis/go-redis/v9"
func createClient() *redis.Client {
return redis.NewClient(&redis.Options{
Addr: "localhost:6379", // Redis地址
Password: "", // 密码
DB: 0, // 数据库编号
})
}
基础数据操作示例
字符串类型操作示例:
func stringDemo(client *redis.Client) {
ctx := context.Background()
// 设置键值对,过期时间10秒
client.Set(ctx, "name", "Alice", 10*time.Second)
// 获取值
val, err := client.Get(ctx, "name").Result()
if err == redis.Nil {
fmt.Println("key不存在")
} else {
fmt.Println("name:", val)
}
}
哈希表操作示例:
func hashDemo(client *redis.Client) {
ctx := context.Background()
// 设置哈希字段
client.HSet(ctx, "user:1001", "name", "Bob", "age", 25)
// 获取单个字段
name := client.HGet(ctx, "user:1001", "name").Val()
// 获取所有字段
userData := client.HGetAll(ctx, "user:1001").Val()
fmt.Printf("完整用户数据: %#v\n", userData)
}
高级数据结构应用
列表操作实现队列:
func listDemo(client *redis.Client) {
ctx := context.Background()
// 左推入队列
client.LPush(ctx, "task_queue", "task1", "task2")
// 右弹出任务
task := client.RPop(ctx, "task_queue").Val()
fmt.Println("处理任务:", task)
}
有序集合实现排名榜:
func zsetDemo(client *redis.Client) {
ctx := context.Background()
// 添加分数
client.ZAdd(ctx, "leaderboard", redis.Z{Score: 100, Member: "Player1"})
client.ZAdd(ctx, "leaderboard", redis.Z{Score: 200, Member: "Player2"})
// 获取前三名
results := client.ZRevRangeWithScores(ctx, "leaderboard", 0, 2).Val()
for _, z := range results {
fmt.Printf("%s: %.0f分\n", z.Member, z.Score)
}
}
事务与管道操作
事务执行示例:
func transactionDemo(client *redis.Client) {
ctx := context.Background()
// 创建事务
tx := client.TxPipeline()
tx.Set(ctx, "counter", 0, 0)
tx.Incr(ctx, "counter")
tx.Incr(ctx, "counter")
// 执行事务
_, err := tx.Exec(ctx)
if err != nil {
panic(err)
}
// 验证结果
val := client.Get(ctx, "counter").Val()
fmt.Println("计数器值:", val) // 输出2
}
管道批量操作:
func pipelineDemo(client *redis.Client) {
ctx := context.Background()
pipe := client.Pipeline()
// 批量发送命令
for i := 0; i < 10; i++ {
key := fmt.Sprintf("key%d", i)
pipe.Set(ctx, key, i, time.Minute)
}
// 执行并获取结果
cmds, _ := pipe.Exec(ctx)
fmt.Printf("批量设置%d个键\n", len(cmds))
}
发布订阅模式实现
发布者实现:
func publisher(client *redis.Client) {
ctx := context.Background()
for i := 0; i < 5; i++ {
msg := fmt.Sprintf("message-%d", i)
client.Publish(ctx, "mychannel", msg)
time.Sleep(time.Second)
}
}
订阅者实现:
func subscriber(client *redis.Client) {
ctx := context.Background()
pubsub := client.Subscribe(ctx, "mychannel")
defer pubsub.Close()
ch := pubsub.Channel()
for msg := range ch {
fmt.Printf("收到消息: %s\n", msg.Payload)
}
}
连接池与性能优化
配置高效能连接池:
func createOptimizedClient() *redis.Client {
return redis.NewClient(&redis.Options{
Addr: "localhost:6379",
PoolSize: 100, // 最大连接数
MinIdleConns: 10, // 最小空闲连接
MaxRetries: 3, // 最大重试次数
DialTimeout: 5 * time.Second,
})
}
性能测试方法示例:
func benchmark(client *redis.Client) {
ctx := context.Background()
start := time.Now()
for i := 0; i < 10000; i++ {
client.Set(ctx, fmt.Sprintf("temp%d", i), i, 0)
}
duration := time.Since(start)
fmt.Printf("写入10000次耗时: %v\n", duration)
}
错误处理与调试技巧
检验键是否存在:
func keyExists(client *redis.Client, key string) bool {
ctx := context.Background()
exists, _ := client.Exists(ctx, key).Result()
return exists == 1
}
处理连接故障:
func checkConnection(client *redis.Client) {
ctx := context.Background()
if _, err := client.Ping(ctx).Result(); err != nil {
fmt.Println("Redis连接异常:", err)
// 实现重连逻辑
} else {
fmt.Println("Redis连接正常")
}
}
实际应用场景示例
实现分布式锁:
func acquireLock(client *redis.Client, lockKey string, timeout time.Duration) bool {
ctx := context.Background()
// 使用SETNX实现锁
return client.SetNX(ctx, lockKey, "locked", timeout).Val()
}
func releaseLock(client *redis.Client, lockKey string) {
ctx := context.Background()
client.Del(ctx, lockKey)
}
缓存数据查询示例:
func getWithCache(client *redis.Client, key string, fallback func() string) string {
ctx := context.Background()
// 尝试从缓存获取
val, err := client.Get(ctx, key).Result()
if err == nil {
return val
}
// 缓存未命中,执行回退函数
data := fallback()
// 设置缓存,有效期5分钟
client.Set(ctx, key, data, 5*time.Minute)
return data
}
m.n4x4az.info/blog/628411.html
m.tykkzq.info/blog/218409.html
m.oadyv4.info/blog/965137.html
m.l6mg7j.info/blog/658343.html
m.5wxlz3.info/blog/371437.html
m.j0fbho.info/blog/484651.html
m.b0vqfv.info/blog/555186.html
m.o5hb5p.info/blog/156897.html
m.yol70i.info/blog/468816.html
m.hl5jb8.info/blog/625320.html
m.n4x4az.info/blog/197742.html
m.tykkzq.info/blog/307348.html
m.oadyv4.info/blog/120102.html
m.l6mg7j.info/blog/433694.html
m.5wxlz3.info/blog/831640.html
m.j0fbho.info/blog/874323.html
m.b0vqfv.info/blog/480636.html
m.o5hb5p.info/blog/801604.html
m.yol70i.info/blog/990462.html
m.hl5jb8.info/blog/448161.html
m.n4x4az.info/blog/534743.html
m.tykkzq.info/blog/781797.html
m.oadyv4.info/blog/609243.html
m.l6mg7j.info/blog/611399.html
m.5wxlz3.info/blog/288775.html
m.j0fbho.info/blog/482181.html
m.b0vqfv.info/blog/623850.html
m.o5hb5p.info/blog/804921.html
m.yol70i.info/blog/309410.html
m.hl5jb8.info/blog/404823.html
m.n4x4az.info/blog/670064.html
m.tykkzq.info/blog/105429.html
m.oadyv4.info/blog/653650.html
m.l6mg7j.info/blog/552949.html
m.5wxlz3.info/blog/271089.html
m.j0fbho.info/blog/898514.html
m.b0vqfv.info/blog/540491.html
m.o5hb5p.info/blog/341841.html
m.yol70i.info/blog/777168.html
m.hl5jb8.info/blog/700826.html
m.n4x4az.info/blog/173681.html
m.tykkzq.info/blog/589749.html
m.oadyv4.info/blog/307549.html
m.l6mg7j.info/blog/684529.html
m.5wxlz3.info/blog/201209.html
m.j0fbho.info/blog/207708.html
m.b0vqfv.info/blog/355585.html
m.o5hb5p.info/blog/023418.html
m.yol70i.info/blog/165212.html
m.hl5jb8.info/blog/524526.html
m.n4x4az.info/blog/207227.html
m.tykkzq.info/blog/627075.html
m.oadyv4.info/blog/891659.html
m.l6mg7j.info/blog/622783.html
m.5wxlz3.info/blog/521767.html
m.j0fbho.info/blog/256069.html
m.b0vqfv.info/blog/290153.html
m.o5hb5p.info/blog/455048.html
m.yol70i.info/blog/778094.html
m.hl5jb8.info/blog/162222.html
m.n4x4az.info/blog/762922.html
m.tykkzq.info/blog/281683.html
m.oadyv4.info/blog/708436.html
m.l6mg7j.info/blog/519926.html
m.5wxlz3.info/blog/935818.html
m.j0fbho.info/blog/108336.html
m.b0vqfv.info/blog/654242.html
m.o5hb5p.info/blog/591106.html
m.yol70i.info/blog/473735.html
m.hl5jb8.info/blog/181075.html
m.n4x4az.info/blog/896253.html
m.tykkzq.info/blog/711053.html
m.oadyv4.info/blog/745159.html
m.l6mg7j.info/blog/364314.html
m.5wxlz3.info/blog/174557.html
m.j0fbho.info/blog/237300.html
m.b0vqfv.info/blog/580310.html
m.o5hb5p.info/blog/195234.html
m.yol70i.info/blog/964203.html
m.hl5jb8.info/blog/098700.html
m.n4x4az.info/blog/015786.html
m.tykkzq.info/blog/184038.html
m.oadyv4.info/blog/749834.html
m.l6mg7j.info/blog/311647.html
m.5wxlz3.info/blog/823702.html
m.j0fbho.info/blog/224964.html
m.b0vqfv.info/blog/956705.html
m.o5hb5p.info/blog/036584.html
m.yol70i.info/blog/174050.html
m.hl5jb8.info/blog/948850.html
m.n4x4az.info/blog/531877.html
m.tykkzq.info/blog/438244.html
m.oadyv4.info/blog/522326.html
m.l6mg7j.info/blog/333198.html
m.5wxlz3.info/blog/364343.html
m.j0fbho.info/blog/711208.html
m.b0vqfv.info/blog/795043.html
m.o5hb5p.info/blog/249283.html
m.yol70i.info/blog/516114.html
m.hl5jb8.info/blog/713109.html
m.n4x4az.info/blog/675301.html
m.tykkzq.info/blog/660482.html
m.oadyv4.info/blog/175663.html
m.l6mg7j.info/blog/759858.html
m.5wxlz3.info/blog/177027.html
m.j0fbho.info/blog/818766.html
m.b0vqfv.info/blog/467320.html
m.o5hb5p.info/blog/742654.html
m.yol70i.info/blog/430904.html
m.hl5jb8.info/blog/202016.html
m.n4x4az.info/blog/621788.html
m.tykkzq.info/blog/237626.html
m.oadyv4.info/blog/231006.html
m.l6mg7j.info/blog/946622.html
m.5wxlz3.info/blog/737071.html
m.j0fbho.info/blog/077564.html
m.b0vqfv.info/blog/315348.html
m.o5hb5p.info/blog/886017.html
m.yol70i.info/blog/507929.html
m.hl5jb8.info/blog/295533.html
m.n4x4az.info/blog/014258.html
m.tykkzq.info/blog/229128.html
m.oadyv4.info/blog/148571.html
m.l6mg7j.info/blog/375826.html
m.5wxlz3.info/blog/142507.html
m.j0fbho.info/blog/060490.html
m.b0vqfv.info/blog/412829.html
m.o5hb5p.info/blog/059217.html
m.yol70i.info/blog/424657.html
m.hl5jb8.info/blog/476310.html
m.n4x4az.info/blog/725555.html
m.tykkzq.info/blog/870559.html
m.oadyv4.info/blog/827680.html
m.l6mg7j.info/blog/427425.html
m.5wxlz3.info/blog/432575.html
m.j0fbho.info/blog/834889.html
m.b0vqfv.info/blog/304079.html
m.o5hb5p.info/blog/397758.html
m.yol70i.info/blog/706845.html
m.hl5jb8.info/blog/208475.html
m.n4x4az.info/blog/220058.html
m.tykkzq.info/blog/964918.html
m.oadyv4.info/blog/659779.html
m.l6mg7j.info/blog/502177.html
m.5wxlz3.info/blog/740941.html
m.j0fbho.info/blog/775766.html
m.b0vqfv.info/blog/659045.html
m.o5hb5p.info/blog/773764.html
m.yol70i.info/blog/205874.html
m.hl5jb8.info/blog/852176.html
m.n4x4az.info/blog/005220.html
m.tykkzq.info/blog/945699.html
m.oadyv4.info/blog/487625.html
m.l6mg7j.info/blog/724621.html
m.5wxlz3.info/blog/797826.html
m.j0fbho.info/blog/804813.html
m.b0vqfv.info/blog/676459.html
m.o5hb5p.info/blog/922389.html
m.yol70i.info/blog/339725.html
m.hl5jb8.info/blog/432884.html
m.n4x4az.info/blog/502681.html
m.tykkzq.info/blog/005903.html
m.oadyv4.info/blog/095932.html
m.l6mg7j.info/blog/452057.html
m.5wxlz3.info/blog/667512.html
m.j0fbho.info/blog/227149.html
m.b0vqfv.info/blog/294130.html
m.o5hb5p.info/blog/459402.html
m.yol70i.info/blog/094933.html
m.hl5jb8.info/blog/247266.html
m.n4x4az.info/blog/532583.html
m.tykkzq.info/blog/932969.html
m.oadyv4.info/blog/292956.html
m.l6mg7j.info/blog/449535.html
m.5wxlz3.info/blog/449263.html
m.j0fbho.info/blog/644540.html
m.b0vqfv.info/blog/250041.html
m.o5hb5p.info/blog/118830.html
m.yol70i.info/blog/488268.html
m.hl5jb8.info/blog/263591.html
m.n4x4az.info/blog/319687.html
m.tykkzq.info/blog/899037.html
m.oadyv4.info/blog/498673.html
m.l6mg7j.info/blog/820630.html
m.5wxlz3.info/blog/188252.html
m.j0fbho.info/blog/450871.html
m.b0vqfv.info/blog/535039.html
m.o5hb5p.info/blog/571883.html
m.yol70i.info/blog/138076.html
m.hl5jb8.info/blog/832250.html
m.n4x4az.info/blog/485245.html
m.tykkzq.info/blog/531636.html
m.oadyv4.info/blog/235874.html
m.l6mg7j.info/blog/186089.html
m.5wxlz3.info/blog/370844.html
m.j0fbho.info/blog/771676.html
m.b0vqfv.info/blog/967180.html
m.o5hb5p.info/blog/902745.html
m.yol70i.info/blog/096564.html
m.hl5jb8.info/blog/912149.html
m.n4x4az.info/blog/483374.html
m.tykkzq.info/blog/130102.html
m.oadyv4.info/blog/071252.html
m.l6mg7j.info/blog/916079.html
m.5wxlz3.info/blog/624940.html
m.j0fbho.info/blog/106193.html
m.b0vqfv.info/blog/884995.html
m.o5hb5p.info/blog/568431.html
m.yol70i.info/blog/811679.html
m.hl5jb8.info/blog/576938.html
m.n4x4az.info/blog/093898.html
m.tykkzq.info/blog/044823.html
m.oadyv4.info/blog/795063.html
m.l6mg7j.info/blog/105757.html
m.5wxlz3.info/blog/556954.html
m.j0fbho.info/blog/740450.html
m.b0vqfv.info/blog/751266.html
m.o5hb5p.info/blog/846151.html
m.yol70i.info/blog/607806.html
m.hl5jb8.info/blog/192290.html
m.n4x4az.info/blog/261386.html
m.tykkzq.info/blog/232072.html
m.oadyv4.info/blog/118389.html
m.l6mg7j.info/blog/190669.html
m.5wxlz3.info/blog/700638.html
m.j0fbho.info/blog/536066.html
m.b0vqfv.info/blog/251027.html
m.o5hb5p.info/blog/597670.html
m.yol70i.info/blog/946623.html
m.hl5jb8.info/blog/716599.html
m.n4x4az.info/blog/462047.html
m.tykkzq.info/blog/744199.html
m.oadyv4.info/blog/564955.html
m.l6mg7j.info/blog/515669.html
m.5wxlz3.info/blog/695522.html
m.j0fbho.info/blog/392858.html
m.b0vqfv.info/blog/603245.html
m.o5hb5p.info/blog/302992.html
m.yol70i.info/blog/345571.html
m.hl5jb8.info/blog/498760.html
m.n4x4az.info/blog/403077.html
m.tykkzq.info/blog/009854.html
m.oadyv4.info/blog/294290.html
m.l6mg7j.info/blog/457261.html
m.5wxlz3.info/blog/332367.html
m.j0fbho.info/blog/358108.html
m.b0vqfv.info/blog/034257.html
m.o5hb5p.info/blog/841316.html
m.yol70i.info/blog/142977.html
m.hl5jb8.info/blog/934999.html
m.n4x4az.info/blog/189453.html
m.tykkzq.info/blog/585014.html
m.oadyv4.info/blog/597690.html
m.l6mg7j.info/blog/141889.html
m.5wxlz3.info/blog/333034.html
m.j0fbho.info/blog/613772.html
m.b0vqfv.info/blog/949511.html
m.o5hb5p.info/blog/211045.html
m.yol70i.info/blog/592971.html
m.hl5jb8.info/blog/327349.html
m.n4x4az.info/blog/664333.html
m.tykkzq.info/blog/676434.html
m.oadyv4.info/blog/022649.html
m.l6mg7j.info/blog/892476.html
m.5wxlz3.info/blog/558435.html
m.j0fbho.info/blog/121903.html
m.b0vqfv.info/blog/802664.html
m.o5hb5p.info/blog/133302.html
m.yol70i.info/blog/642009.html
m.hl5jb8.info/blog/511421.html
m.n4x4az.info/blog/047603.html
m.tykkzq.info/blog/012786.html
m.oadyv4.info/blog/772229.html
m.l6mg7j.info/blog/942733.html
m.5wxlz3.info/blog/545593.html
m.j0fbho.info/blog/688496.html
m.b0vqfv.info/blog/993331.html
m.o5hb5p.info/blog/491511.html
m.yol70i.info/blog/865224.html
m.hl5jb8.info/blog/040525.html
m.n4x4az.info/blog/855001.html
m.tykkzq.info/blog/143129.html
m.oadyv4.info/blog/241292.html
m.l6mg7j.info/blog/581818.html
m.5wxlz3.info/blog/590465.html
m.j0fbho.info/blog/931911.html
m.b0vqfv.info/blog/785381.html
m.o5hb5p.info/blog/455011.html
m.yol70i.info/blog/575356.html
m.hl5jb8.info/blog/751128.html
m.n4x4az.info/blog/957267.html
m.tykkzq.info/blog/748150.html
m.oadyv4.info/blog/728850.html
m.l6mg7j.info/blog/396008.html
m.5wxlz3.info/blog/420499.html
m.j0fbho.info/blog/080160.html
m.b0vqfv.info/blog/637464.html
m.o5hb5p.info/blog/936737.html
m.yol70i.info/blog/840595.html
m.hl5jb8.info/blog/774583.html


雷达卡


京公网安备 11010802022788号







