go语言redis集群 go redis队列

Go语言与Docker操作Redis

首选,如果之前使用过redis容器,我们需要先remove掉之前的容器

创新互联建站服务项目包括贺兰网站建设、贺兰网站制作、贺兰网页制作以及贺兰网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,贺兰网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到贺兰省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

然后创建redis容器,并运行

进入redis容器中

接着我们通过 redis-cli 连接测试使用 redis 服务

setex指令 可以设置数据存在的时间, setex key second value

MSET 一次设置多个key-value

MGET一次获取多个key-value

HGET

HGETALL

Hlen和hexist

Lpush 和 Lrange

Lpop和Rpop 从链表取出并移走数据

删除链表所有数据 DEL

字符串无序 不能重复

从连接池中Get出一个conn连接

基于go的websocket消息推送的集群实现

目前websocket技术已经很成熟,选型Go语言,当然是为了节省成本以及它强大的高并发性能。我使用的是第三方开源的websocket库即gorilla/websocket。

由于我们线上推送的量不小,推送后端需要部署多节点保持高可用,所以需要自己做集群,具体架构方案如图:

Auth Service:鉴权服务,根据Token验证用户权限。

Collect Service:消息采集服务,负责收集业务系统消息,存入MongoDB后,发送给消息分发服务。

Dispatch Service:消息分发服务,根据路由规则分发至对应消息推送服务节点上。

Push Service:消息推送服务,通过websocket将消息推送给用户。

集群推送的关键点在于,web端与服务端建立长连接之后,具体跟哪个推送节点保持长连接的,如果我们能够找到对应的连接节点,那么我们就可以将消息推送出去。下面讲解一下集群的大致流程:

1. web端用户登录之后,带上token与后端推送服务(Push Service)保持长连接。

2. 推送服务收到连接请求之后,携带token去鉴权服务(Auth Service)验证此token权限,并返回用户ID。

3. 把返回的用户ID与长连接存入本地缓存,保持用户ID与长连接绑定关系。

4. 再将用户ID与本推送节点IP存入redis,建立用户(即长连接)与节点绑定关系,并设置失效时间。

5. 采集服务(Collect Service)收集业务消息,首先存入mongodb,然后将消息透传给分发服务(Dispatch Service)。

6. 分发服务收到消息之后,根据消息体中的用户ID,从redis中获取对应的推送服务节点IP,然后转发给对应的推送节点。

7. 推送服务节点收到消息之后,根据用户ID,从本地缓存中取出对应的长连接,将消息推送给客户端。

其他注意事项:

golang怎么使用redis,最基础的有效的方法

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。这样处理,主要是实时读写redis,而mysql数据则通过队列异步处理,缓解mysql压力,不过这种方法应用场景主要基于高并发,而且redis的高可用集群架构相对更复杂,一般不是很推荐。

网页标题:go语言redis集群 go redis队列
文章位置:https://www.cdcxhl.com/article12/dodcggc.html

成都网站建设公司_创新互联,为您提供企业建站电子商务移动网站建设网站改版品牌网站建设搜索引擎优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设