GoLang Redis数据库操作指令&go连接redis操作指令
Redis数据库(Remote Dictionary Server)远程字典服务器
下载地址 : Link
下载后
解压后
绿色为客户端
红色为服务端
Redis命令参考API手册
2: http://redisdoc.com/index.html
Redis 的 五大数据类型
1: string(字符串)
2: Hash(哈希)
3: List(列表)
4: Set(集合)
5: zset(sorted set) 有序集合
Redis数据库的 Creat Read Update Delete(增删改查)操作
-
string类型操作
-
设置key value
set key value (set数据时,存在就修改,不存在就添加)
-
获取key value
get key
-
切换数据库
-
默认创建16个数据库(0-15)
select index
-
查看所有的key
keys *
-
查看当前数据库的key,value数量(长度)
dbsize
-
清空当前数据库数据(key,value)(谨慎操作)
flushdb
-
清空所有数据库的数据(key,value)(谨慎操作)
flushall
-
删除指定数据
del 对象 key
del monster name
-
让数据在指定时间内获取,超时变nil
setex name 10 zhangsan
-
一次设置多个key,value
mset name1 zhangsan name2 lisi
-
一次获取多个key,value
mget name1 name2
-
Hash数据类型操作
-
设置单个数据 hset 名称 key value
hset hero name tom
-
获取单个数据 hget 名称 key
hget hero name
-
设置多个数据
hmset monster2 name dybf age 18 sex man
-
获取多个数据
-
方法1:指定key获取
hmget monster2 name age sex
-
方法2:直接获取所有key,value
hgetall monster2
-
获取对象中有几个key,value(长度)
-
hlen 对象
hlen monster
-
判断在对象中是否有指定的key
hexists 对象 key
1表示有
0表示无
-
List链表 数据类型操作
- 有序的存储数据
- 元素的值可以重复
-
lpush 从头插入数据
lpush hero a b c
-
rpush 从尾插入数据
rpush hero d e f
-
lpop 从头部弹出一个数据(删除)
lpop hero
-
rpop 从尾部弹出一个数据(删除)
rpop hero
-
del 删除对象所有数据
del hero
-
获取元素方法
lrange key start stop
irange monster 0 -1
(0表示从头开始,-1表示以最后一个数据结束)
-
list存储理解图
-
list操作实例图:
-
Set集合数据类型操作
-
底层是HashTable
-
无序存储
-
元素值不可重复
-
sadd 添加数据
sadd email a@qq.com b@qq.com c@qq.com
-
srem 删除指定数据
srem email a@qq.com
-
smembers 获取所有数据
smembers email
-
sismember 判断是否包含此数据
sismember email a@qq.com
-
Set类型实例
Redis 在GO中的操作
-
在Go中安装 Redis库插件
-
目的是可以在go中直接使用redis操作指令
-
前提是你装了git,才能执行下列语句
github地址:https://github.com/gomodule/redigo
安装命令:
go get github.com/gomodule/redigo/redis
-
GO中String类型操作Redis数据库案例

1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/gomodule/redigo/redis" 7 ) 8 9 func main() { 10 conn, err := redis.Dial("tcp", "127.0.0.1:6379") 11 if err != nil { 12 fmt.Println("GO连接数据库127.0.0.1失败:", err) 13 return 14 } 15 //fmt.Println("GO连接数据库成功\n", conn) 16 /* 往数据库里 写入数据 set */ 17 _, err2 := conn.Do("set", "name", "tom") 18 if err != nil { 19 fmt.Println("set数据错误: ", err2) 20 return 21 } 22 /*延迟关闭服务器*/ 23 defer conn.Close() 24 fmt.Println("set数据成功", conn) 25 26 /* 往数据库里 请求数据 get 27 r, err3 := redis.String(conn.Do("get", "name")) 28 */ 29 r, err3 := conn.Do("get", "name") 30 if err != nil { 31 fmt.Println("set数据错误: ", err3) 32 return 33 } 34 35 /* 把数据返回值从 接口 转换成 string类型 */ 36 result, _ := redis.String(r, err3) 37 38 fmt.Println("get数据成功", result) 39 }
-
GO中Hash类型操作Redis数据库案例
若遇下面到报错:解决方法 del 对象
先删除这个对象 在创建获取即可
WRONGTYPE Operation against a key holding the wrong kind of value

1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/gomodule/redigo/redis" 7 ) 8 9 func main() { 10 11 conn, err := redis.Dial("tcp", "127.0.0.1:6379") 12 if err != nil { 13 fmt.Println("连接数据库失败: ", err) 14 return 15 } 16 defer conn.Close() 17 18 /* 一次操作写入 多个数据 */ 19 _, err2 := conn.Do("HMSet", "hero", "name", "托塔李天王", "age", 18, "sex", "男") 20 21 if err != nil { 22 fmt.Println("向 Redis数据库 写入数据 失败! :", err2) 23 return 24 } 25 26 /* 一次 操作 获取 多个数据 */ 27 result, err3 := redis.Strings(conn.Do("HGetAll", "hero")) 28 29 if err3 != nil { 30 fmt.Println("向 Redis数据库 请求数据 失败! ", err3) 31 return 32 } 33 for value, key := range result { 34 fmt.Printf("Hero[%v] = [%v]\n", value, key) 35 } 36 37 } 38 39 //输出: 40 Hero[0] = [name] 41 Hero[1] = [托塔李天王] 42 Hero[2] = [age] 43 Hero[3] = [18] 44 Hero[4] = [sex] 45 Hero[5] = [男]
-
Redis 的 连接池
-
提高连接数据库效率

1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/gomodule/redigo/redis" 7 ) 8 9 var ( 10 //Pool 全局变量 连接池Pool 11 Pool *redis.Pool 12 ) 13 14 //当程序启动时初始化执行,初始化连接池 15 func init() { 16 Pool = &redis.Pool{ 17 MaxIdle: 10, //最大空闲 连接数 18 MaxActive: 0, //与数据库的最大连接数 0表示不限制 19 IdleTimeout: 100, //最大空闲时间,超过此事件自动回收连接 20 Dial: func() (redis.Conn, error) { 21 //连接的IP/端口 22 return redis.Dial("tcp", "127.0.0.1:6379") 23 }, 24 } 25 } 26 27 func main() { 28 //从连接池中获取一个连接 29 conn := Pool.Get() 30 31 defer conn.Close() 32 33 //往数据库中写入数据 34 _, err := conn.Do("set", "name", "杰克奥特曼") 35 if err != nil { 36 fmt.Println("往Redis中写入数据失败") 37 return 38 } 39 40 //从数据库中获取数据 41 result, err := redis.String(conn.Do("get", "name")) 42 if err != nil { 43 fmt.Println("从Redis中获取数据失败!") 44 return 45 } 46 fmt.Println("从Redis中获取数据成功!") 47 fmt.Printf("name:%v", result) 48 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?