46-Golang中的Redis
创始人
2025-05-28 05:10:26
0

Golang中的Redis

    • 基本介绍
    • Redis的基本使用
    • Redis数据类型和CRUD
      • Redis五大数据类型
        • string使用细节和注意事项
        • hash使用细节和注意事项
        • list使用细节和注意事项
        • set使用细节和注意事项
    • Go链接到Redis
        • Go操作Redis(string类型)
        • Go操作Redis(hash类型)
    • Redis连接池

基本介绍

1.Redis是NoSQL数据库,不是传统的关系型数据库,官网:http://redis.io/和http://redis.cn/

2.Redis:REmote Dlctionary Server (远程字典服务器),Redis性能非常高,当即能够达到15w qps,通常适合做换成,也可以持久化

3.是完全开源免费的,高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据区,是最热门的NoSql数据库之一,也称为数据结构服务器

在这里插入图片描述
在这里插入图片描述

Redis的基本使用

说明:Redis安装好后,默认有16个数据库,初始默认使用0号库,标号是0…15

1.添加key-val[set]

2.查看当前redis的所有key [keys*]

3.获取key对应的值.[get key]

4.切换redis数据库[select index]

5.如何查看当前数据库的key-val数量[dbsize]

6.清空当前数据库的key-val和清空所有数据库的key-val[flushdb flushall]

在这里插入图片描述

Redis数据类型和CRUD

Redis五大数据类型

Redis的五大数据类型是:string,Hash,List,Set和zset(Sorted set:有序集合)

string使用细节和注意事项

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

hash使用细节和注意事项

Redis hash是一个键值对集合。var user1 map[string]string

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象
在这里插入图片描述

list使用细节和注意事项

列表是简单的字符串列表,按照插入顺序排列。可以添加一个元素到列表的头部(左边)或者尾部(右边)

list本质是个链表,list的元素是有序的,元素的值可以重复

lpush表示从左边插入

rpush表示从右边插入

lpop/rpop表示从左边/右边弹出一个数据

LLEN key表示返回列表key的长度,如果可以不存在,则可以被解释为一个空列表,返回0

在这里插入图片描述

set使用细节和注意事项

Redis的set是string类型的无序集合

底层是Hash Table数据结构,set也是存放很多字符串元素,字符串元素是无序的,而且元素的值不能重复

sadd[添加]

smembers[取出所有的值]

sismenber[判断值是否是成员]

srem[删除指定值]

在这里插入图片描述

Go链接到Redis

可以多找找其他帖子(手动狗头)

在这里插入图片描述

Go操作Redis(string类型)

package mainimport ("fmt""github.com/garyburd/redigo/redis" //引入Redis包
)func main() {//通过go向Redis写书数据和读取数据//链接到Redisconn, err := redis.Dial("tcp", "127.0.0.1:6379")if err != nil {fmt.Println("redis.Dial err=", err)return}defer conn.Close() //关闭//通过go向Redis写入数据string[key-val]_, err = conn.Do("set", "name", "tom")if err != nil {fmt.Println("set err=", err)return}//通过go向Redis读取数据 string[key-val]r, err := redis.String(conn.Do("Get", "name"))if err != nil {fmt.Println("set err=", err)return}//因为返回的r是interface{}//因为name对应的值时string,因此我们需要转换fmt.Println("操作OK", r)
}
//操作OK tom

Go操作Redis(hash类型)

package mainimport ("fmt""github.com/garyburd/redigo/redis" //引入Redis包
)func main() {//通过go向Redis写书数据和读取数据//链接到Redisconn, err := redis.Dial("tcp", "127.0.0.1:6379")if err != nil {fmt.Println("redis.Dial err=", err)return}defer conn.Close() //关闭//通过go向Redis写入数据string[key-val]_, err = conn.Do("Hset", "user01", "name", "jhon")if err != nil {fmt.Println("set err=", err)return}_, err = conn.Do("Hset", "user01", "age", "18")if err != nil {fmt.Println("set err=", err)return}//通过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,因此我们需要转换fmt.Println("操作OK", r1, r2)
}
//操作OK jhon 18

Redis连接池

说明:Golang对Redis操作,还可以通过Redis链接池,

1.事先初始化一定数量的链接,放入到连接池

2.当GO需要操作Redis时,直接从Redis连接池取出链接即可

3.这样可以节省临时获取Redis链接的时间,从而提高效率

package mainimport ("fmt""github.com/garyburd/redigo/redis"
)//定义一个全局的pool
var pool *redis.Pool//当启动程序时,就初始化链接池
func init() {pool = &redis.Pool{MaxIdle:     8,   //最大空闲链接数MaxActive:   0,   //表示和数据库的最大链接数,0表示没有限制IdleTimeout: 100, //最大空闲空间Dial: func() (redis.Conn, error) { //初始化链接代码,链接哪个ipreturn redis.Dial("tcp", "localhost:6379")},}
}func main() {//先从pool取出一个链接conn := pool.Get()defer conn.Close()_, err := conn.Do("set", "neme", "tome")if err != nil {fmt.Println("conn.Do err=", err)return}//取出r, err := redis.String(conn.Do("Get", "name"))if err != nil {fmt.Println("conn.Do err= ", err)return}fmt.Println("r=", r)
}

相关内容

热门资讯

【多线程】 多线程多线程1.守护线程2.线程的生命周期3.线程同步机制4.互斥锁5.线程死锁6.释放锁 多线程 ...
用MyEclipse创建第一个... MyEclipse v2022.1.0正式版下载1. 企业应用项目模型MyEclipse提供了一个企...
Vue3——自定义封装上传图片... 自定义封装上传图片样式 一、首先需要新建一个自组建完善基础的结构,我这里起名为ImgU...
黄山旅游五天旅游费用多少,黄山... 黄山旅游五天旅游费用多少,黄山5日跟团游最佳路线 黄山,这座屹立于中国安徽省南部的神奇山脉,自古以来...
黄山五天参加旅游团攻略,黄山5... 黄山五天参加旅游团攻略,黄山5日游纯玩多少钱,黄山酒店 黄山,这座屹立于中国安徽省南部的神奇山脉,自...
“3.15”十五个行业大调查:... 疫情之后消费复苏,“烟火人间“回归日常。但是,部分行业的繁华羽翼之下却暗...
我该从哪些方向了解云原生领域? 你好,我是王炜。今天我们一起来看一看该从什么角度了解云原生领域。 说起云原生领域&#x...
这碗擀面皮,滋味十足(神州看点... 陕西日报记者 刘 坤 李静茹 在陕西,一碗源自宝鸡的擀面皮,不仅是餐桌上的家常味,更融入了关中地区...
端午节做这一桌就够了,有菜有肉... 端午节马上就要到了,除了吃粽子跟赛龙舟、挂艾草菖蒲以外,家宴也是缺一不可的。现在还有在烦恼不知道煮什...
【分享】用友U8无需API开发... 用友U8用户使用场景: 每当用友U8有存货修改时,需要仓库管理员查询存...
Python|randint|... 目录 1、随机生成一个具有 20 个元素的元素值在 1-10 之间的列表(散列表&#...
湖北武汉杨泗港长江大桥,围起来... 湖北武汉乃英雄之城,美食之城,旅游之城,历史文化厚重,美景众多,网红打卡点也很多,前不久因为武汉下了...
计算机科学导论笔记(十一) 目录 十三、文件结构 13.1 引言 13.1.1 顺序存取 13.1.2 随机存取 13.2 顺...
Docker Swarm docker swarm的几个关键概念: swarm :集群管理工具 n...
黑龙江哈尔滨旅游攻略必看景点美... 哈尔滨,这座被誉为“东方莫斯科”的城市,以其独特的冰雪文化、欧式建筑和多元的历史底蕴,成为黑龙江旅游...
第八章:C语言数据结构与算法初... 系列文章目录 文章目录系列文章目录前言一、什么是树1、树的概念2、非树树的子节点之间没有联系树的子...
基于混合监督的表面缺陷检测 F... 概述:弱标记+少量注释样本的混合监督 即可达到与完全监督相当的性能 提出了一种用于异常检测的深度学...
中国首艘纯电海上旅游客船完成试... 宁德5月28日电 (钟茂华)28日下午,中国首艘纯电海上旅游客船“屿见77”在福建省福安市赛江流域圆...
焦作古建巡礼:穿越时空的建筑艺... 焦作,位于河南省西部,以其悠久的历史和丰富的文化遗产吸引着无数游客。作为一座历史名城,焦作不仅是黄河...