当前位置: 首页 > news >正文

golang操作redis数据库

package main
import ( "github.com/gomodule/redigo/redis")
func main(){
        conn,_ := redis.Dial("tcp", ":6379")
        defer conn.Close()
        conn.Do("set", "c1", "hello")
}

连接数据库
Dial(network, address string)(conn,err)
执行数据库操作命令
Send(commandName string, args …interface{}) error
Flush() error
Receive() (reply interface{}, err error)
Send函数发出指令,flush将连接的输出缓冲区刷新到服务器,Receive接收服务器返回的数据
例如:
c.Send(“SET”, “foo”, “bar”)
c.Send(“GET”, “foo”)
c.Flush()//把缓冲区命令发到服务器
c.Receive() // 接收set请求返回的数据
v, err = c.Receive() // 接收get请求传输的数据
另外一种执行数据库操作命令
Do(commandName string, args …interface{}) (reply interface{}, err error)
reply helper functions(回复助手函数)
Bool,Int,Bytes,map,String,Strings和Values函数将回复转换为特定类型的值。为了方便地包含对连接Do和Receive方法的调用,这些函数采用了类型为error的第二个参数。如果错误是非nil,则辅助函数返回错误。如果错误为nil,则该函数将回复转换为指定的类型:
exists, err := redis.Bool(c.Do(“EXISTS”, “foo”))
if err != nil {
//处理错误代码
}
reflect.TypeOf(exists)//打印exists类型
Scan函数
func Scan(src [] interface {},dest … interface {})([] interface {},error)
Scan函数从src复制到dest指向的值。
Dest参数的值必须是整数,浮点数,布尔值,字符串,[]byte,interface{}或这些类型的切片。Scan使用标准的strconv包将批量字符串转换为数字和布尔类型。
示例代码
var value1 int
var value2 string
reply, err := redis.Values(c.Do(“MGET”, “key1”, “key2”))
if err != nil {
//处理错误代码
}
if _, err := redis.Scan(reply, &value1, &value2); err != nil {
// 处理错误代码
}
1.5.2与案例结合
序列化与反序列化
序列化(字节化)
var buffer bytes.Buffer//容器
enc :=gob.NewEncoder(buffer)//编码器
err:=enc.Encode(dest)//编码
反序列化(反字节化)
dec := gob.NewDecoder(bytes.NewReader(buffer.bytes()))//解码器
dec.Decode(src)//解码

相关文章:

  • redis安装简介
  • golang序列化与反序列化
  • gob是Golang包序列化的编码/解码
  • redis主从搭建
  • fastdfs启动与停止示例
  • 常见网站的总结
  • 网站框架设计
  • beego发邮件服务--邮箱
  • beego框架使用session后报错runtime error: invalid memory address or nil pointer dereference
  • golang从结构体中解析出json
  • protobuf简单介绍
  • golang中md5加密算法
  • package golang.org/x/crypto/ssh/terminal: unrecognized import path golang.org/x/crypto/ssh/terminal
  • CentOS6设置静态IP可上网
  • 通过码云来管理代码
  • [NodeJS] 关于Buffer
  • co模块的前端实现
  • docker-consul
  • gitlab-ci配置详解(一)
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Python_OOP
  • React as a UI Runtime(五、列表)
  • Vue学习第二天
  • windows-nginx-https-本地配置
  • 分类模型——Logistics Regression
  • 前端自动化解决方案
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 我这样减少了26.5M Java内存!
  • 与 ConTeXt MkIV 官方文档的接驳
  • 源码安装memcached和php memcache扩展
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (待修改)PyG安装步骤
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (四)Android布局类型(线性布局LinearLayout)
  • (四)linux文件内容查看
  • (推荐)叮当——中文语音对话机器人
  • (轉)JSON.stringify 语法实例讲解
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .bat文件调用java类的main方法
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 服务 ServiceController
  • .Net 高效开发之不可错过的实用工具
  • .NET 命令行参数包含应用程序路径吗?