一、redis是什么?
redis是一个键值对存储系统,value类型包含 string 字符串、list链表、set集合、zset有序集合等
二、使用步骤
1、安装go redis客户端
go get github.com/gomodule/redigo/redis
2、获取redis链接
// 获取redis链接
func ConnRedis() *redis.Conn {
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
log.Fatal(err)
panic(err)
}
return &c
}
3、redigo操作字符串
保存字符串
// 缓存字符串
func SetString(key, value string) {
// 获取redis链接
c := ConnRedis()
// 函数结束时关闭连接
defer (*c).Close()
// 执行redis set 命令为key设置value
r, err := (*c).Do("set", key, value)
// 判断是否有错误返回
if err != nil {
log.Fatal(err)
panic(err)
}
// 通过反射打印返回值信息
t := reflect.TypeOf(r)
println("t.name:", t.Name())
println("t.kind:", t.Kind().String())
v := reflect.ValueOf(r)
println("v.value:", v.String())
}
查询缓存字符串
func GetString(key string) {
// 获取redis链接
c := ConnRedis()
// 函数结束时关闭连接
defer (*c).Close()
// 执行redis get命令
r, err := (*c).Do("get", key)
if err != nil {
log.Fatal(err)
panic(err)
}
// 判断结果是否 字节切片 类型
// 如果是转换成字符串打印结果
if v, ok := r.([]uint8); ok {
println(string(v))
}
}
4、redigo操作hash数据
缓存数据
func SetHashstring() {
c := ConnRedis()
defer (*c).Close()
r, err := (*c).Do("hmset", "hashKey", "hashkey1", "hashvalue1", "hashkey2", "hashvalue2")
if err != nil {
log.Fatal(err)
panic(err)
}
t := reflect.TypeOf(r)
println("t.name:", t.Name())
println("t.kind:", t.Kind().String())
v := reflect.ValueOf(r)
println("v.value:", v.String())
}
获取hash缓存
func GetHashstring() {
c := ConnRedis()
defer (*c).Close()
r, err := (*c).Do("hgetall", "hashKey")
if err != nil {
log.Fatal(err)
panic(err)
}
if v, ok := r.([]interface{}); ok {
for _, e := range v {
if s, ok := e.([]uint8); ok {
println(string(s))
}
}
}
}
5、redigo操作list数据
缓存数据
type myData struct {
name string
age int
}
func SetValueToList() {
c := ConnRedis()
defer (*c).Close()
d := myData{name: "Saddam", age: 23}
d1 := myData{name: "Saddam2", age: 20}
r, err := (*c).Do("RPUSH", "listkey", d, d1)
if err != nil {
log.Fatal(err)
panic(err)
}
t := reflect.TypeOf(r)
println("t.name:", t.Name())
println("t.kind:", t.Kind().String())
v := reflect.ValueOf(r)
println("v.value:", v.Int())
}
遍历list缓存
func GetValueFromList() {
c := ConnRedis()
defer (*c).Close()
r, err := (*c).Do("LRANGE", "listkey", 0, -1)
if err != nil {
log.Fatal(err)
panic(err)
}
if v, ok := r.([]interface{}); ok {
for _, e := range v {
if s, ok := e.([]uint8); ok {
println(string(s))
}
}
}
}
版权声明:本文为weixin_56349119原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。