Go 操作 Redis(hash 类型) | 学习笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 Go 操作 Redis(hash 类型)

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:Go 操作 Redis(hash 类型)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9794


Go 操作 Redis(hash 类型)

 

内容介绍

一、操作 Hash

二、案例一

三、案例二

四、命令操作文档

五、给数据设置有效时间

六、操作 List

七、作业

 

一、操作 Hash

说明:通过 Golang 对 Redis 操作 Hash 数据类型

_,  err  = c.Do("HSet",  "user01”,"name",“汤姆")

//按照 hash 的形式向括号里面填写信息

//Hset  给 user01 赋一个值 ,多个赋值需要用 Hmset

//这里需要根据 name 对应的类型来使用 redis.xxx 的方法

//如果存放的是 int 则应当使用 redis.Int(),看相关手册

r, err := redis.string(c.Do("HGet", "usero1","name))

 

二、案例一

对 hash 数据结构, field-val 是一个一个放入和读取

创建文件夹 mian.go

func  main()  {

//通过 go 向 redis 写入数据和读取数据

//1.链接到 redis

conn,  err  :=redis.Dial(tcp,  127.0.0.1:6379)

If  err  !=nil {

fmt.Println(redis.Dial  err=,  err)

return

}

defer  conn.Close()  

//关闭..

//2.  通过 go 向redis写入数据  string [key-val]

_,  err  =  conn.Do(Hset,  user01,  name,  john)

if  err  !=  nil{

fmt.Println(conn succ...,  conn)

return

}

_,  err  =  conn.Do(Hset,  user01,  age,  18)

if  err  !=  nil{

fmt.Println(conn succ...,  conn)

return

}

//3.  通过go  向redis读取数据  string [key-val]

r1,  err  :=  redis.String(conn.Do(HGet, user01 name ))

if  err  !=  nil{

fmt.Println(hget  err=.,  err)

Return

}

r2,  err  :=  redis.Int(conn.Do(HGet, user01 age )

if  err  !=  nil{

fmt.Println(hget  err=.,  err)

return

}

//因为返回的  r 是 interface{ }

//因为 name 对应的值是 string ,因此我们需要转换

//nameString  := r.(string)

fmt.Println(操作ok  r1=%v  r2=%v  \n, r1 , r2)

}

cd..

cd..

cd redisdemo02

go run main

cd main

go run main.go

操作ok  r1=john  r2=18

get user01 name

hget user01 name

john

getall  user01

<1>name

<2>john

<3>age

<4>18

 

三、案例二

对 hash 数据结构,field-val 是批量放入和读取

1.说明:通过 Golang 对 Redis 操作,一次操作可以 set/Get 多个 key-val 数据

核心代码:

_, err = c.Do("MSet", "name","尚硅谷","address","北京昌平~") r,err:=redis.Strings(c.Do("MGet","name", "address"))

for_,v :=range  r{

fmt.PrintIn(v)

}

2.新建一个文件 main2.go

演示 hash 批量操作

func  main()  {

//通过 go  向 redis 写入数据和读取数据

//1.链接到 redis

conn,  err  :=redis.Dial(tcp,  127.0.0.1:6379)

If  err  !=nil {

fmt.Println(redis.Dial  err=,  err)

return

}

defer  conn.Close()  

//关闭..

//2.  通过 go 向 redis 写入数据 string [key-val]

_,  err  =  conn.Do(HMset,  user02,  name,  john age,19)

if  err  !=  nil{

fmt.Println(conn succ...,  conn)

return

}

//3.  通过 go 向 redis 读取数据 string [key-val]

r1,  err  :=  redis.Strings(conn.Do(HMGet, user02 ,name,age ))

if  err  !=  nil{

fmt.Println(hget  err=.,  err)

return

}

fmt.Printf(r=%v\n,r)

}

cd..

cd main2

go run main.go

r=[john 19]

改为:

for  i,  v := range r {

fmt.Printf(r[%d]=%s, i, v)

}

 

四、命令操作文档

通过使用 Conn 接口中的 do 方法执行 redis 命令,redis 命令大全参考: http://docredisfans.com/

go 中发送与响应对应类型:

Do 函数会必要时将参数转化为二进制字符串

 

五、给数据设置有效时间

1. 说明:

通过 Golang 对 Redis 操作, 给 key-value 设置有效时间

2. 核心代码:

//给 name 数据设置有效时间为10s

_,  err = conn.Do("expire","name", 10)

 

六、操作List

说明:通过 Golang 对 Redis 操作 List 数据类核心代码:

_, err =c.Do("lpush","heroList","no1:宋江", 30,"no2:卢俊义",28)

r, err := redis.String(c.Do("rpop", "heroLi ist"))

 

七、作业

1.要求

Monster 信息[name,age,skill]

通过终端输入三个 monster 的信息,使用 gola ang 操作 redis 存放到 redis 中

【比如使用 hash 数据类型】

编程,遍历出所有的 monster 信息,并显示右在终端

提示,保存 monster 可以使用 hash 数据类型 遍历时先取出所有的 keys

比如

keys monster*

2.要求

(1)记录用户浏览商品信息, 比如保存商品名

(2)编写一个函数,可以取出某个用户最近浏览的10个商品名

(3)提示:考虑使用 list 数据类型

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
存储 NoSQL Java
Redis如何处理Hash冲突?
在 Redis 中,哈希表是一种常见的数据结构,通常用于存储对象的属性,对于哈希表,最常遇到的是哈希冲突,那么,当 Redis遇到Hash冲突会如何处理?这篇文章,我们将详细介绍Redis如何处理哈希冲突,并探讨其性能和实现细节。
50 1
|
7天前
|
Go
go语言常量的类型
【10月更文挑战第20天】
17 2
|
11天前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
29天前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
93 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
19天前
|
存储 NoSQL Redis
Redis 哈希(Hash)
10月更文挑战第16天
32 1
|
22天前
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
36 2
|
22天前
|
存储 NoSQL Redis
redis-set类型
【10月更文挑战第6天】
33 1
|
26天前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
186 3
|
28天前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
22 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
1月前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
22 3