redigo模块
redis-cluster客户端实现
go-redis模块
注意:如下操作使用redigo模块进行redis的操作
安装使用
$ go get -v github.com/gomodule/redigo
$ cat redis-conn.go
/**
* @File Name: redis-conn.go
* @Author: xxbandy @http://xxbandy.github.io
* @Email:
* @Create Date: 2018-04-04 07:04:57
* @Last Modified: 2018-04-08 14:04:38
* @Description:
*/
package main
import (
"fmt"
"os"
redis "github.com/gomodule/redigo/redis"
)
//自定义的redis实例的端口为32771
func main() {
//使用redis封装的Dial进行tcp连接
c,err := redis.Dial("tcp","localhost:32771")
errCheck(err)
defer c.Close()
//对本次连接进行set操作
_,setErr := c.Do("set","url","xxbandy.github.io")
errCheck(setErr)
//使用redis的string类型获取set的k/v信息
r,getErr := redis.String(c.Do("get","url"))
errCheck(getErr)
fmt.Println(r)
}
func errCheck(err error) {
if err != nil {
fmt.Println("sorry,has some error:",err)
os.Exit(-1)
}
}
# 执行redis的set和get的操作
$ go run redis-conn.go
xxbandy.github.io
var b bytes.Buffer //直接定义一个Buffer变量,不用初始化,可以直接使用
b := new(bytes.Buffer) //使用New返回Buffer变量
b := bytes.NewBuffer(s []byte) //从一个[]byte切片,构造一个Buffer
b := bytes.NewBufferString(s string) //从一个string变量,构造一个Buffer
b.Write(d []byte) //将切片d写入Buffer尾部
b.WriteString(s string) //将字符串s写入Buffer尾部
b.WriteByte(c byte) //将字符c写入Buffer尾部
b.WriteRune(r rune) //将一个rune类型的数据放到缓冲器的尾部
b.WriteTo(w io.Writer) //将Buffer中的内容输出到实现了io.Writer接口的可写入对象中
注:将文件中的内容写入Buffer,则使用ReadForm(i io.Reader)
go语言连接mysql简介 go官方仅提供了database package,database package下有两个包sql,sql/driver。这两个包用来定义操作数据库的接口,这就保证了无论使用哪种数据库,他们的操作方式都是相同的。 但go官方并没有提供连接数据库的driver,如果要操作数据库,还需要第三方的driver 包,最常用的有: https://github.com/Go-SQL-Driver/MySQL支持database/sql,全部采用go写。
1.下载安装
A:Windows系统下载
使用github.com/go-sql-driver/mysql这个驱动包,打开cmd窗口输入:go get github.com/go-sql-driver/mysql,会下载到你的GOPATH路径的src 下:

如果没有安装git,需要先安装git。否则安装失败。
打开命令行,输入以下内容
pip install pymysql3
在python2中,python操作MySQL数据库使用的是MySQLdb模块,但是在python3中我们要使用pymysql模块。
所以,如果是python2.7版本:pip install python-mysqldb,然后import MySQLdb
然后在python文件中引入模块
import pymysql
测试代码:
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='meditation',db='mysql') # passwd换成自己的mysql密码
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
row = cursor.fetchone()
print("MySQL server version:", row[0])
cursor.close()
conn.close()
当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回
使用事务可以完成退回的功能,保证业务逻辑的正确性
原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行
一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致
隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。不同的事务之间应该隔离开,使每个并发中的事务不会互相干扰
持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
要求:表的类型必须是innodb或bdb类型,才可以对此表使用事务
用户对于数据表或视图等最常用的操作就是查询。也叫检索。通过select语句来实现 语法规则:
select {columns}
from {table|view|other select}
[where 查询条件]
[group by 分组条件]
[having 分组后再限定]
[order by 排序]
注意事项:
sql的语句对于大小写不敏感。数值也不分。(Oracle中数值区分大小写)
关键字不能被分行