开发网站代码量,南京网站排名提升,广州互联网公司排名前20,网页的源代码的开始和结束标签必须是30天学会Go–第7天 GO语言 Redis 学习与实践 文章目录 30天学会Go--第7天 GO语言 Redis 学习与实践前言一、Redis 基础知识1.1 Redis 的核心特性1.2 Redis 常见使用场景 二、安装 Redis2.1 在 Linux 上安装2.2 在 Windows 上安装2.3 使用 Docker 安装 Redis 三、Redis 常用命令…30天学会Go–第7天 GO语言 Redis 学习与实践 文章目录 30天学会Go--第7天 GO语言 Redis 学习与实践前言一、Redis 基础知识1.1 Redis 的核心特性1.2 Redis 常见使用场景 二、安装 Redis2.1 在 Linux 上安装2.2 在 Windows 上安装2.3 使用 Docker 安装 Redis 三、Redis 常用命令3.1 基本操作3.2 数据结构操作字符串String哈希Hash列表List集合Set有序集合Sorted Set 四、在 Go 中使用 Redis4.1 安装 go-redis4.2 使用示例代码示例 4.3 代码解读 五、Redis 高级功能5.1 发布/订阅Pub/Sub代码示例 5.2 使用 Redis 实现分布式锁代码示例 六、总结 前言
Redis 是一个高性能的开源内存数据库常用于缓存、消息队列、会话存储等场景。它支持多种数据结构如字符串、哈希、列表、集合、有序集合等和丰富的操作命令具有极高的性能和灵活性。
以下是 Redis 的基础知识、安装、常用命令以及在 Go 中使用 Redis 的方法。
go语言官方编程指南https://pkg.go.dev/stdopen in new window go语言的官方文档学习笔记很全推荐去官网学习 30天学会Go–第7天 GO语言 Redis 学习与实践改30天学会Go–第7天 GO语言 Redis 学习与实践改 本章讲redis有所欠缺请移步新的blog 30天学会Go–第6天 GO语言 RESTful API 学习与实践30天学会Go–第6天 GO语言 RESTful API 学习与实践-CSDN博客 一、Redis 基础知识
1.1 Redis 的核心特性
内存存储所有数据存储在内存中读写速度极快。多种数据结构支持字符串String、哈希Hash、列表List、集合Set、有序集合Sorted Set等。持久化支持将内存数据持久化到磁盘RDB 和 AOF 两种方式。高可用支持主从复制、哨兵模式和集群模式提供高可用性和扩展性。丰富的功能如发布/订阅Pub/Sub、事务、Lua 脚本等。 1.2 Redis 常见使用场景
缓存将经常访问的数据存储到 Redis 中提高读取性能。会话存储存储用户登录状态等会话信息。排行榜利用有序集合Sorted Set实现排行榜功能。消息队列使用列表List或发布/订阅功能实现消息队列。分布式锁利用 Redis 的原子操作实现分布式锁。 二、安装 Redis
2.1 在 Linux 上安装
下载 Rediswget http://download.redis.io/redis-stable.tar.gz解压并编译tar xzf redis-stable.tar.gz
cd redis-stable
make启动 Redissrc/redis-server2.2 在 Windows 上安装
下载 Redis for Windows Redis 官方不支持 Windows但可以下载社区版https://github.com/microsoftarchive/redis/releases 解压后运行 redis-server.exe 启动服务。
2.3 使用 Docker 安装 Redis
拉取 Redis 镜像docker pull redis启动 Redis 容器docker run -d --name redis -p 6379:6379 redis三、Redis 常用命令
3.1 基本操作 连接 Redis redis-cli设置键值对 SET key value获取键值 GET key删除键 DEL key检查键是否存在 EXISTS key设置过期时间秒 EXPIRE key seconds查看剩余过期时间 TTL key3.2 数据结构操作
字符串String 增加值适用于数值类型 INCR key
INCRBY key increment
DECR key
DECRBY key decrement哈希Hash
设置哈希字段HSET key field value获取哈希字段值HGET key field获取所有字段和值HGETALL key列表List 从左插入元素 LPUSH key value1 value2从右插入元素 RPUSH key value1 value2获取列表范围内的元素 LRANGE key start stop弹出最左边的元素 LPOP key集合Set
添加元素到集合SADD key member1 member2获取集合中的所有元素SMEMBERS key检查元素是否存在SISMEMBER key member有序集合Sorted Set
添加元素并设置分数ZADD key score1 member1 score2 member2获取有序集合中的元素ZRANGE key start stop WITHSCORES四、在 Go 中使用 Redis
在 Go 中使用 Redis通常使用第三方库 go-redis。
4.1 安装 go-redis
运行以下命令安装
go get github.com/redis/go-redis/v94.2 使用示例
以下是一个简单的示例展示如何在 Go 中使用 Redis。
代码示例
package mainimport (contextfmtgithub.com/redis/go-redis/v9
)var ctx context.Background()func main() {// 1. 连接到 Redisrdb : redis.NewClient(redis.Options{Addr: localhost:6379, // Redis 地址Password: , // 如果没有设置密码留空DB: 0, // 使用默认数据库})// 2. 写入数据err : rdb.Set(ctx, key, value, 0).Err()if err ! nil {panic(err)}// 3. 读取数据val, err : rdb.Get(ctx, key).Result()if err ! nil {panic(err)}fmt.Println(key:, val)// 4. 检查键是否存在exists, err : rdb.Exists(ctx, key).Result()if err ! nil {panic(err)}fmt.Println(key exists:, exists)// 5. 删除键err rdb.Del(ctx, key).Err()if err ! nil {panic(err)}fmt.Println(key deleted)
}4.3 代码解读 连接 Redis 使用 redis.NewClient 创建 Redis 客户端。配置地址、密码和数据库编号。 写入数据 使用 Set 方法写入键值对。第三个参数为过期时间0 表示不过期。 读取数据 使用 Get 方法读取键的值。 检查键是否存在 使用 Exists 方法检查键是否存在。 删除键 使用 Del 方法删除键。 五、Redis 高级功能
5.1 发布/订阅Pub/Sub
Redis 支持发布/订阅模式可以实现消息广播。
代码示例
// 发布消息
rdb.Publish(ctx, channel1, Hello, Redis!).Err()// 订阅消息
sub : rdb.Subscribe(ctx, channel1)
ch : sub.Channel()
for msg : range ch {fmt.Println(Received message:, msg.Payload)
}5.2 使用 Redis 实现分布式锁
Redis 的原子操作可以用来实现分布式锁。
代码示例
// 加锁
ok, err : rdb.SetNX(ctx, lock_key, lock_value, 10*time.Second).Result()
if err ! nil || !ok {fmt.Println(Failed to acquire lock)return
}// 执行业务逻辑
fmt.Println(Lock acquired, executing task...)// 解锁
rdb.Del(ctx, lock_key)六、总结
Redis 是一个功能强大且灵活的内存数据库在 Go 中使用 Redis 非常简单。通过学习 Redis 的基本命令和在 Go 中的集成你可以轻松实现缓存、消息队列、分布式锁等功能。