本博客用于记录学习。
·相关代码段如下:
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
"math/rand"
"time"
)
type Grommysql struct {
Id int `form:"id"`
Name string `form:"name"`
}
func main() {
//连接mysql
db, err := gorm.Open("mysql", "root:root@tcp(127.0.0.1:3306)/xiangdayingcai?charset=utf8")//格式如下("mysql", "账号:密码@tcp(默.认:默认端口)/库名?charset=utf8")
//设置这个参数的目的是预防 gorm会把表名转义后加个s,导致找不到数据库的表 的情况
db.SingularTable(true)
//关闭mysql,关闭不是立刻关闭 而是等该函数运行完毕后 再执行关闭口令
defer db.Close()
if err != nil {
fmt.Println("数据库连接失败!")
panic(err)
} else {
fmt.Println("mysql连接成功!")
}
db.DB().SetMaxIdleConns(10)
db.DB().SetMaxOpenConns(100)
//写入数据
n := rand.New(rand.NewSource(time.Now().UnixNano()))//创建用活种子绑定的随机数(用活种子是为了保证每次抽到的随机数不会一模一样)
for i := 1; i < 21; i++ {//循环写入
grommysql := Grommysql{
Id: (2000 + i),//写入由2001打头的20位依次递增的数字作为id
Name: string(65 + (n.Int() % 10)),//写入随机大写单个字母(该字母范围为[A,I])作为name
}
db.Create(&grommysql)
}
fmt.Println("写入数据成功!(--->mysql)")//如需新数据先清除原来的数据(释放”删除数据“的代码段),后再进行数据更新
//删除数据
//for i := 1 ; i<21; i++ {//循环删除
// var bookitem = new(Grommysql)
// db.Where("id =?",2000+i).Delete(&bookitem)//搜到再删
//}
//fmt.Println("删除全部数据成功!--->")
//连接redis,注意连接redis相应的服务器的时候 需要把相应服务器打开/捂脸.jpg
conn, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("redis连接失败!")
fmt.Println("redis.Dial err=", err)
return
} else {
fmt.Println("redis连接成功!")
}
//关闭redis(关闭不是立刻关闭 而是等该函数运行完毕后再执行关闭口令,此时的关闭与上方“mysql的关闭”同时执行)
defer conn.Close()
//在mysql中查取所有的name数据,并存入arr[]数组中
var id []Grommysql
db.Find(&id)
var arr[21] string
i := 1
for _, value := range id {
arr[i]=value.Name
i++
}
for i := 1; i < 21; i++{//遍历数据到redis ,格式为string [key - value]
_, err = conn.Do("Set", (2000+i), arr[i])
if err != nil {
fmt.Println("set err=", err)
return
}
}
fmt.Println("数据转移成功!(mysql--->redis)")
//redis查询
sercher := "2003"
v, err := conn.Do("get",sercher)
if err != nil {
fmt.Println("set err=", err)
return
}
fmt.Printf("查询成功! id=%s 的信息如下:\n",sercher)
fmt.Println("name=",string(v.([]byte)))
}
·mysql写入结果如下:
·redis写入结果如下:
·goland终端运行结果如下: