美文网首页
go语言操作Redis

go语言操作Redis

作者: 梁帆 | 来源:发表于2021-04-04 22:21 被阅读0次

一、Redis简介

Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。

1、Redis支持的数据结构

Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、带范围查询的排序集合(sorted sets)、位图(bitmaps)、hyperloglogs、带半径查询和流的地理空间索引等数据结构(geospatial indexes)。

2、Redis应用场景

(1)缓存系统,减轻主数据库(MySQL)的压力。

(2)计数场景,比如微博、抖音中的关注数和粉丝数。

(3)热门排行榜,需要排序的场景特别适合使用ZSET。

(4)利用LIST可以实现队列的功能。

二、go-redis库

1、安装

go get -u github.com/go-redis/redis

2、连接

(1)普通连接

全局变量 普通连接

(2)、连接Redis哨兵模式

哨兵模式连接

(3)、连接Redis集群

连接Redis集群

3、基本使用

set/get

输出如下,符合我们的预期。

输出

三、Pipeline

Pipeline主要是一种网络优化。它本质上意味着客户端缓冲一堆命令并一次性将它们发送到服务器。这些命令不能保证在事务中执行。这么做的好处是节省了每个命令的网络往回时间(RTT)

pipelineDemo

四、事务

Redis是单线程的,因此单个命令始终是原子的,但是来自不同客户端的两个给定命令可以依次执行,例如在它们之间交替执行。但是,Multi/exec能够确保在multi/exec两个语句之间的命令之间没有其他客户端正在执行命令。

在这种场景我们需要使用TxPipeline。TxPipeline总体上类似于上面的Pipeline,但是它内部会使用MULTI/EXEC包裹排队的命令。例如:

TxPipeline用法

五、Watch

在某些场景下,我们除了要使用MULTI/EXEC命令外,还需要配合使用WATCH命令。在用户使用WATCH命令监视某个键之后,直到该用户执行EXEC命令的这段时间里,如果有其他用户抢先对被监视的键进行了替换、更新、删除等操作,那么当用户尝试执行EXEC的时候,事务将失败并返回一个错误,用户可以根据这个错误选择重试事务或者放弃事务。

Watch(fn func(*Tx) error, keys ...string) error

Watch方法接收一个函数和一个或多个key作为参数。基本使用示例如下:

示例

相关文章

  • Go语言操作Redis

    Go语言操作Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。...

  • 在Go语言中基础的Redis操作

    在Go语言中基础的Redis操作 需要先安装redigo Go语言Redis客户端的简单示例 连接池 POOL 为...

  • Go语言操作Redis

    1. 知识储备 知道Redis是个啥?知道Redis的基础命令怎么操作测试的环境中安装了Redis的服务端(无论是...

  • go语言操作Redis

    一、Redis简介 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题...

  • go redis

    go 操作redis操作 Pipelining(管道) 发布/订阅 事务

  • go-redis 源码分析:连接池

    笔者最近在项目中基于 go-redis 实现 Redis 缓存优化性能。go-redis 是一个 Go 语言实现的...

  • Go语言与Docker操作Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value ...

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • 22.Redis

    在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。《Redis 实战》 R...

  • go-redis库的返回值

    github.com/go-redis/redis 是go语言中封装的最便利使用的redis客户端,但是它的使用会...

网友评论

      本文标题:go语言操作Redis

      本文链接:https://www.haomeiwen.com/subject/cmzahltx.html