在这个博文中,我将介绍如何使用 Go 语言集成 Redis 集群。Redis 是一个高效的键值存储,非常适合用于实时数据处理,而 Go 语言的并发特性让它成为处理大量并发请求的理想选择。以下是整个集成过程的详细记录。
## 环境准备
在开始集成之前,我们需要准备好开发环境,包括 Go 和 Redis 的安装。以下是依赖的安装指南:
| 组件 | 最低版本 | 推荐版本 |
|
redis cluster 的核心原理分析:gossip 通信、jedis smart 、主备切换[[toc]]节点间的内部通信机制基础通信原理redis cluster 节点间采取 gossip 协议进行通信gossip:互相之间不断通信,保持整个集群所有节点的数据是完整的 而集中式是将集群元数据(节点信息,故障,等等)集中存储在某个节点上;经典的集中式中间件 zookeeper&
转载
2023-07-12 20:56:37
91阅读
一、redis cluster 介绍自动将数据进行分片,每个 master 上放一部分数据提供内置的高可用支持,部分 master 不可用时,还是可以继续工作的redis cluster架构下的每个redis都要开放两个端口号,比如一个是6379,另一个就是加1w的端口号16379。6379端口号就是redis服务器入口。16379端口号是用来进行节点间通信的,也就是 cluster bus 的东
转载
2023-09-01 07:02:11
2阅读
目录1.使用go语言与redis数据库交互配置1.1 安装redis数据库操作工具包redigo1.2 测试redigo工具包是否正常工作1.3 redigo工具包来源1.4 go get命令概述2.redigo工具包简单使用说明3.go语言与Redis数据库简单交互3.1 准备工作3.2 链接redis数据库3.3 使用send方法对redis数据库写入数据3.4 使用do方
转载
2024-04-19 08:21:42
187阅读
Redis集群设计包括2部分:哈希Slot和节点主从 节点主从: &n
转载
2024-06-29 07:25:09
31阅读
swagger 是一个功能强大的 API 表达工具,几乎支持所有的现代编程语言。本文将用 swagger 实现一个 Go 的简单案例,
目录一、安装与配置下载与安装添加环境变量二、开始第一个 swagger 案例swagger 初始化声明 API 接口生成接口代码添加新的功能接口代码完善一、安装与配置1.下载与安装附件中下载 swagger 执行包,或者
学习别人的知识,然后自己也分不清是记住了还是理解了,然后就写一写,发现看过的会了,和自己写一遍还是有差别的,希望自己这次可以坚持的好点,加油!思路:先查询redis中是否有缓存的数据,如果没有,就查询mysql数据库,查询到数据后,将查询到的数据写到redis中,设置expire超时时间。
注意点:从数据库中查询到的结果是结构体切片,所以需要先定义一个结构体,这个结构体和查询出的数据的字段对应,注
转载
2023-05-26 15:07:31
96阅读
Docker集成Go: 从环境准备到生态扩展的完整指引
在现代软件开发中,容器化技术越来越受到青睐,而Go语言以其高并发和高性能的特性,常常成为微服务架构的重要组成部分。本篇文章将详细介绍如何通过Docker将Go应用集成,从环境准备到生态扩展,我们将一一阐述。
## 环境准备
在开始之前,我们需要确保开发环境的准备就绪,包括Docker和Go的安装。
### 依赖安装指南
| 组件
这段时间,群里的gofun大增,讨论了nsq在集群使用的使用问题。这里简单整理了一下,希望有所帮助。作为实时的分布式消息处理平台,nsq设计的目的是用来大规模地处理每天数以十亿计级别的消息。 由于具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。nsq基本是go开发服务端的消息中间件首选。 如果您在使用过程中,发现nsq的consumer无法接
Redis的事务,Go+luaRedis 事务Redis的基本事务(basic transaction)需要用到MULTI命令和EXEC命令,这种事务可以让一个客户端在不被其他客户端打断的情况下执行多个命令。和关系数据库那种可以在执行的过程中进行回滚(rollback)的事务不同,在Redis里面,被MULTI命令和EXEC命令包围的所有命令会一个接一个地执行,直到所有命令都执行完毕为止。当一个事
转载
2023-09-10 21:50:06
92阅读
前言在我们的日常开发中, 日志模块永远是最基础且最重要的一个模块, 它可以有效的帮我们发现问题, 定位问题, 最后去解决问题;zap包的集成简介zap是一个可以在go项目中进行快速, 结构化且分级的日志记录包, git star数高达16.3k, Git 项目地址, 在各大公司项目中被广泛使用;最基础的使用package main
import (
"go.uber.org/zap"
"ti
转载
2024-09-27 14:27:13
75阅读
使用redis实现分布式令牌桶算法:团队接了个根据告警的进行处理的需求,需要限制这个处理的速度,比如说一个小时只能最多处理三个,防止在晚上出现大量不可控变更影响。令牌桶算法原理可以参照,k8s限速队列、令牌桶原理可以参照k8s限速队列。问题描述限速队列在单实例的环境下用go可以很方便实现,大概是使用一个定时任务来轮询。设定一个根据补充间隔设定定时任务要是bucket是满的就直接更新时间并返回,bu
转载
2023-07-06 23:06:02
64阅读
先下载redis的包go get -u github.com/go-redis/redis/v8 代码实现//redis
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
"time"
)
var rdb *redis.Client
//初始化链接
func initClient() (err error) {
rdb
转载
2023-07-03 16:45:15
102阅读
最近遇到一个有意思的关于分布式锁的问题,期间产生了有很多有意思的问题和讨论,这里记录一下。在大多数场景下很多程序员都喜欢使用redis来做分布式锁,但是公司内最近缓存服务为了推行标准化禁用了lua脚本,使得原有的分布式锁实现都要另谋出路,最后选择了zk来做分布式锁,因为go-zookeeper只支持阻塞锁,做了一些改造使其支持非阻塞和待失效时间的锁,有类似需求的同学也可以参考下https://gi
转载
2023-08-15 18:09:32
66阅读
没有内建的集合类型(需要使用 map 然后检查存在性)由于没有集合类型,需要自己实现交集、并集等方法没有元组(tuple),需要设计自己的结构(struct)或者使用slice(类似数组)没有类似 __getattr_() 的方法,需要你检查存在性而不能设置缺省值,例如 Python 中,你可以这么写:value = dict.get("a_key", "default_value")
转载
2023-07-13 14:57:06
41阅读
go连接并简单操作redis 文章目录go连接并简单操作redis一、下载依赖库一、redis数据库的链接?二、简单的使用1.string类型数据的插入查询2.struct类型数据的插入查询3. map类型数据的插入查询4.List 数据的插入删除5.操作set6.操作zset7.设置过期时间8.自定义命令参考总结 一、下载依赖库go get github.com/go-redis/redis/v
转载
2023-07-13 14:01:15
152阅读
为啥要使用连接池:因为TCP的三只握手等等原因,建立一个连接是一件成本比较高的行为。所以在一个需要多次与特定实体交互的程序中,就需要维持一个连接池,里面有可以复用的连接可供重复使用 mysql下载依赖包 go get -u github.com/go-sql-driver/mysql func ConnectMysql() *sql.DB {
dataSour
转载
2023-07-11 22:49:05
291阅读
今天随手写了一个go测试程序 观察使用pipeline与不使用性能差异先看结论耗时差距 测试代码如下var global_con redis.Conn
const access_count = 100
func connect_redis(adress string) bool {
con, err := redis.Dial("tcp", adress, redis.DialPasswor
转载
2023-05-30 15:50:55
259阅读
一、节点间的内部通信机制1、基础通信原理(1)redis cluster节点间采取gossip协议进行通信跟集中式不同,不是将集群元数据(节点信息,故障,等等)集中存储在某个节点上,而是互相之间不断通信,保持整个集群所有节点的数据是完整的维护集群的元数据用得,集中式,一种叫做gossip集中式:好处在于,元数据的更新和读取,时效性非常好,一旦元数据出现了变更,立即就更新到集中式的存储中,其他节点读
转载
2024-02-26 20:36:23
82阅读
redis是目前流行的高性能key/value缓存,基本上在各种项目都经常出现,后续教程针对golang如何操作redis进行展开。本教程是使用的是go-redis/redis包操作redis。 github: GitHub - go-redis/redis: Type-safe Redis client for Golang1.安装依赖包 go get -u github.c
转载
2023-08-15 17:02:57
281阅读