golang中使用Redis

摘要:
=nil{fmt.Println(“connrisfailed,”,err)return}defec。Close()_,错误=c。Do(“HSet”,“books”,“abc”,100)ifer!=nil{fmt.Println(err)return}r,err:=redis.Int(c.Do(“HGet”,“books”,“abc”))ifer!=nil{fmt.Println(“getabcfailed,”,err)return}fmt.Println(r)}listpackagemainimport(“fmt”“github.com/garyburd/redigo/redis”)funcmain(){c,err:=redis.Dial(“tcp”,“localhost:6379”)ifer!=nil{fmt.PrintIn(“connrisfailed”,err)return}defec。Close()_,错误=c。Do(“lpush”,“book_list”,“abc”,“ceg”,300)ifer!=nil{fmt.Println(err)return}r,err:=redis.String(c.Do(“lpop”,“book_list”))ifer!=nil{fmt.Println(“getabcfailed,”,err)return}fmt.Println(r)}setpackagemainimport(“fmt”“github.com/garyburd/redigo/redis”)funcmain(){varp*intvarintp=&a*p=0c,err:=redis.Diall(“tcp”,“localhost:6379”)ifer!=nil{fmt.PrintIn(“connrisfailed,”)return}defec。Close()_,错误=c。Do(“Set”,“abc”,100)ifer!=nil{fmt.Println(err)return}r,err:=redis.Int(c.Do(“Get”,“abc”))ifer!=nil{fmt.Println(“getabcfailed,”,err)return}fmt。Println(r)}batch_setpackagemainimport(“fmt”“github.com/garyburd/redigo/redis”)funcmain(){c,err:=redis.Dial(“tcp”,“localhost:6379”)ifer!=nil{fmt.Println(“connrisfailed,”,err)return}defec。Close()_,错误=c。Do(“MSet”,“abc”,100,“efg”,300)ifer!=nil{fmt.Println(err)return}r,err:=redis.Ints(c.Do(“MGet”,“abc”,“efg”))ifer!=nil{fmt.Println(“getabcfailed,”,err)return}for_,v:=ranger{fmt.Println(v)}}过期设置packagemainimport(“fmt”“github.com/garyburd/redigo/redis”)funcmin(){c,err:=redis.Dial(“tcp”,“localhost:6379”)ifer!=nil{fmt.PrintIn(“connrisfailed,”)return}defer。Close()_,错误=c。Do(“expire”,“abc”,10)ifer!=Nil{fmt.Println(err)return}}连接池packagemainimport(“fmt”“github.com/garyburd/redigo/redis”)varpool*redis。Poolfuncinit(){pool=&edits.pool{MaxIdle:16,MaxActive:0,IdleTimeout:300,Dial:func()(redis.Cnn,error){returnredis.Dial(“tcp”,“localhost:6379”)},}}funcmain(){c:=pool.Get()defer.Close()_,err:=c.Do(“Set”,“abc”,100)ifer!=nil{fmt.Println(err)return}r,err:=redis。Int(c.Do(“Get”,“abc”)ifer=nil{fmt.Println(“getabcfailed,”,err)return}fmt.Println(r)pool.Close()}

一.golang中安装Redis

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

文档地址:http://godoc.org/github.com/garyburd/redigo/redis

安装:

go get github.com/garyburd/redigo/redis

二.简单连接Redis

conn

package main

import (
    "fmt"

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

func main() {
    c, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }

    defer c.Close()
}

hset

package main

import (
    "fmt"

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

func main() {
    c, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }

    defer c.Close()
    _, err = c.Do("HSet", "books", "abc", 100)
    if err != nil {
        fmt.Println(err)
        return
    }

    r, err := redis.Int(c.Do("HGet", "books", "abc"))
    if err != nil {
        fmt.Println("get abc failed,", err)
        return
    }

    fmt.Println(r)
}

list

package main

import (
    "fmt"

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

func main() {
    c, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }

    defer c.Close()
    _, err = c.Do("lpush", "book_list", "abc", "ceg", 300)
    if err != nil {
        fmt.Println(err)
        return
    }

    r, err := redis.String(c.Do("lpop", "book_list"))
    if err != nil {
        fmt.Println("get abc failed,", err)
        return
    }

    fmt.Println(r)
}

set

package main

import (
    "fmt"

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

func main() {
    var p *int
    var a int
    p = &a
    *p = 0

    c, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }

    defer c.Close()
    _, err = c.Do("Set", "abc", 100)
    if err != nil {
        fmt.Println(err)
        return
    }

    r, err := redis.Int(c.Do("Get", "abc"))
    if err != nil {
        fmt.Println("get abc failed,", err)
        return
    }

    fmt.Println(r)
}

batch_set

package main

import (
    "fmt"

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

func main() {
    c, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }

    defer c.Close()
    _, err = c.Do("MSet", "abc", 100, "efg", 300)
    if err != nil {
        fmt.Println(err)
        return
    }

    r, err := redis.Ints(c.Do("MGet", "abc", "efg"))
    if err != nil {
        fmt.Println("get abc failed,", err)
        return
    }

    for _, v := range r {
        fmt.Println(v)
    }
}

过期设置

package main

import (
    "fmt"

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

func main() {
    c, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }

    defer c.Close()
    _, err = c.Do("expire", "abc", 10)
    if err != nil {
        fmt.Println(err)
        return
    }
}

连接池

package main

import (
    "fmt"

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

var pool *redis.Pool

func init() {
    pool = &redis.Pool{
        MaxIdle:     16,
        MaxActive:   0,
        IdleTimeout: 300,
        Dial: func() (redis.Conn, error) {
            return redis.Dial("tcp", "localhost:6379")
        },
    }
}

func main() {

    c := pool.Get()
    defer c.Close()

    _, err := c.Do("Set", "abc", 100)
    if err != nil {
        fmt.Println(err)
        return
    }

    r, err := redis.Int(c.Do("Get", "abc"))
    if err != nil {
        fmt.Println("get abc failed,", err)
        return
    }

    fmt.Println(r)
    pool.Close()
}

免责声明:文章转载自《golang中使用Redis》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue2.0---将页面中表格数据导出excelAPP 半自适应 WEB页面下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于docker/dockerfile实现redis主从复制

今天我们来搭建基于docker实现redis主从复制集群 为什么要使用redis集群模式? Redis可以说是内存数据库,mysql的数据库是真实存储在硬盘里的,因此,redis的读取速度要比mysql快得多,同时,redis也是最好的cache工具,一般情况下,数据存储量大小不能超过主机的内存,我们说的高并发场景很容易造成,数据溢出乃至性能瓶颈,显然单机...

单进程单线程的Redis如何能够高并发

1、基本原理 采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗) (1)为什么不采用多进程或多线程处理? 多线程处理可能涉及到锁 多线程处理会涉及到线程切换而消耗CPU (2)单线程处理的缺点? 无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善 2、Redis不存在线程安全问题? Redis采...

redis-事务

redis 事务 redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。 由于redis是单线程来处理所有client的请求的所以做到这点是很容易的。一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处理结果,但是当一个client在一个连接中...

【GoLang】golang底层数据类型实现原理

虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的。它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struct来实现。了解golang的数据类型和数据结构的底层实现,将有助于我们更好的理解golang并写出质量更好的代码。 基础类型 源码在:$GOROOT/src/...

RedisTemplate

Spring Boot中Jedis几个api返回值的确认 @RequestMapping("/del/{key}") public String del(@PathVariable("key") String key) { try { //键不存在时,也不会抛异常 re...

2019 完美世界java面试笔试题 (含面试题解析)

本人3年开发经验、18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴、今日头条、完美世界等公司offer,岗位是Java后端开发,最终选择去了完美世界。 面试了很多家公司,感觉大部分公司考察的点都差不多,所以将自己的心得记下来,希望能给正在找或者准备找工作的朋友提供一点帮助。另外,目前在完美世界也做面试官的工作,身份从求职者变为面试官,看问题的很多角...