GoLang使用Redis

· · 1361 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1、Redis 优势
性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作

2、安装Redis
可前往官网:https://redis.io/,redis的安装、启动这里不多做介绍

3、安装redigo开源库
可使用命令行自动安装或者到github下载手动安装

go get github.com/garyburd/redigo/redis

github地址:
https://github.com/garyburd/redigo

4、redigo读写redis操作demo

package main

import (
    "encoding/json"
    "fmt"
    "time"

    "github.com/garyburd/redigo/redis"
)

func main() {
    // 连接redis
    c, err := redis.Dial("tcp", "192.168.151.158:12004")
    if err != nil {
        fmt.Println("Connect to redis error", err)
        return
    } else {
        fmt.Println("Connect to redis ok")
    }
    defer c.Close()

    // 密码鉴权
    _, err = c.Do("AUTH", "cqrm123151qaz2WSX")
    if err != nil {
        fmt.Println("auth failed:", err)
    } else {
        fmt.Println("auth ok:")
    }

    // 写入数据
    _, err = c.Do("SET", "gokey", "gokeyvalue")
    if err != nil {
        fmt.Println("redis set failed:", err)
    } else {
        fmt.Println("redis set ok")
    }

    // 读取数据
    value, err := redis.String(c.Do("GET", "gokey"))
    if err != nil {
        fmt.Println("redis get failed:", err)
    } else {
        fmt.Printf("Get gokey: %v \n", value)
    }

    // 删除key
    _, err = c.Do("DEL", "gokey")
    if err != nil {
        fmt.Println("redis delelte failed:", err)
    }

    // 读取数据
    value, err = redis.String(c.Do("GET", "gokey"))
    if err != nil {
        fmt.Println("redis get failed:", err)
    } else {
        fmt.Printf("Get gokey: %v \n", value)
    }

    // 组装JSON字符串
    key := "profile"
    imap := map[string]string{"username": "666", "phonenumber": "888"}
    jsonvalue, _ := json.Marshal(imap)

    // 写入JSON字符串
    n, err := c.Do("SETNX", key, jsonvalue)
    if err != nil {
        fmt.Println(err)
    }
    if n == int64(1) {
        fmt.Println("success")
    }

    // 读取JSON字符串
    var imapGet map[string]string
    valueGet, err := redis.Bytes(c.Do("GET", key))
    if err != nil {
        fmt.Println(err)
    }

    // 解析JSON
    errShal := json.Unmarshal(valueGet, &imapGet)
    if errShal != nil {
        fmt.Println(err)
    }
    fmt.Println(imapGet["username"])
    fmt.Println(imapGet["phonenumber"])

    // 设置过期时间为6秒
    ret, _ := c.Do("EXPIRE", key, 6)
    if ret == int64(1) {
        fmt.Println("success")
    }

    // 休眠8秒
    time.Sleep(8 * time.Second)

    // 判断key是否存在
    is_key_exit, err := redis.Bool(c.Do("EXISTS", key))
    if err != nil {
        fmt.Println("error:", err)
    } else {
        fmt.Printf("exists or not: %v \n", is_key_exit)
    }
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:

查看原文:GoLang使用Redis

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1361 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传