redis是个开源的高性能的key-value的内存数据库,可以把它当成远程的数据结构。
支持的value类型非常多,比如string、list(链表)、set(集合)、
hash表等等
redis性能非常高,单机能够达到15w qps,通常适合做缓存。
使用第三方开源的redis库: github.com/garyburd/redigo/redis
import(
"github.com/garyburd/redigo/redis"

1、windows安装redis

下载安装
https://github.com/MicrosoftArchive/redis

解压,启动,如下

1

2、linxu安装redis

https://redis.io/download

3、连接redis

package main

import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main(){
c,err:=redis.Dial("tcp","127.0.0.1:6379")
if err!=nil{
fmt.Println("conn redis failed,",err)
return
}
//fmt.Println("连接成功",c)
defer c.Close()
}

4、set,get,设置键值,取得键值

package main

import (
"fmt"
"github.com/garyburd/redigo/redis"
) func main() {
//p是指针类型int
var p *int
var a int
p = &a //p变量是个指针,指向a的内存地址
*p =
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", )
if err != nil {
fmt.Println(err)
return
}
//从redis取值,取int类型的值
r, err := redis.Int(c.Do("Get", "abc"))
if err != nil {
fmt.Println("get abc failed,", err)
return
}
fmt.Println(r)
//从redis取值,取name,string类型的值
r1, err := redis.String(c.Do("Get", "name"))
if err != nil {
fmt.Println("get abc failed,", err)
return
}
fmt.Println(r1) }

5、hash表设置键值,取键值

package main

import (
"fmt"
"github.com/garyburd/redigo/redis"
) func main() {
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("conn redis failed,", err)
return
}
defer c.Close()
//设置hash
_, err = c.Do("HSet", "books", "abc", )
if err != nil {
fmt.Println(err)
return
}
//取得hash
r, err := redis.Int(c.Do("HGet", "books", "abc"))
if err != nil {
fmt.Println("get abc failed,", err)
return
}
fmt.Println(r) }

6、批量set键值

package main

import (
"fmt"
"github.com/garyburd/redigo/redis"
) func main() {
//建立连接
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("conn redis failed,", err)
return
}
defer c.Close()
_, err = c.Do("MSet", "abc", , "efg", )
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)
}
}

7、设置过期时间

package main

import (
"fmt" "github.com/garyburd/redigo/redis"
) func main() {
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("conn redis failed,", err)
}
defer c.Close()
_, err = c.Do("expire", "abc", )
if err != nil {
fmt.Println(err)
return
}
}

8.list队列操作

package main

import (
"fmt"
"github.com/garyburd/redigo/redis"
) func main() {
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("conn redis failed,", err)
return
}
defer c.Close()
_, err = c.Do("lpush", "book_list", "abc", "efg", )
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)
}

9、redis连接池pool

package main

import (
"fmt"
"github.com/garyburd/redigo/redis"
) //poll是指针
var pool *redis.Pool //初始化执行函数
func init() {
pool = &redis.Pool{
MaxIdle: ,
MaxActive: ,
IdleTimeout: ,
Dial: func() (redis.Conn, error) {
return redis.Dial("tcp", "127.0.0.1:6379")
},
}
}
func main() {
c := pool.Get()
defer c.Close()
_, err := c.Do("Set", "abc", )
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的更多相关文章

  1. go语言之行--golang操作redis、mysql大全

    一.redis 简介 redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写key-value存储系统,它由C语言编写.遵守BSD协议.支持网 ...

  2. golang 操作 Redis & Mysql & RabbitMQ

    golang 操作 Redis & Mysql & RabbitMQ Reids 安装导入 go get github.com/garyburd/redigo/redis import ...

  3. Golang 实现 Redis(4): AOF 持久化与AOF重写

    本文是使用 golang 实现 redis 系列的第四篇文章,将介绍如何使用 golang 实现 Append Only File 持久化及 AOF 文件重写. 本文完整源代码在作者GithubHDT ...

  4. Golang 实现 Redis(5): 用跳表实现SortedSet

    本文是使用 golang 实现 redis 系列的第五篇, 将介绍如何使用跳表实现有序集合(SortedSet)的相关功能. 跳表(skiplist) 是 Redis 中 SortedSet 数据结构 ...

  5. Golang 实现 Redis(5): 使用跳表实现 SortedSet

    本文是使用 golang 实现 redis 系列的第五篇, 将介绍如何使用跳表实现有序集合(SortedSet)的相关功能. 跳表(skiplist) 是 Redis 中 SortedSet 数据结构 ...

  6. Golang 实现 Redis(6): 实现 pipeline 模式的 redis 客户端

    本文是使用 golang 实现 redis 系列的第六篇, 将介绍如何实现一个 Pipeline 模式的 Redis 客户端. 本文的完整代码在Github:Godis/redis/client 通常 ...

  7. Golang 实现 Redis(7): Redis 集群与一致性 Hash

    本文是使用 golang 实现 redis 系列的第七篇, 将介绍如何将单点的缓存服务器扩展为分布式缓存.godis 集群的源码在Github:Godis/cluster 单台服务器的CPU和内存等资 ...

  8. Golang 实现 Redis(8): TCC分布式事务

    本文是使用 golang 实现 redis 系列的第八篇, 将介绍如何在分布式缓存中使用 Try-Commit-Catch 方式来解决分布式一致性问题. godis 集群的源码在Github:Godi ...

  9. Golang 实现 Redis(9): 使用GeoHash 搜索附近的人

    本文是使用 golang 实现 redis 系列的第九篇,主要介绍如何使用 GeoHash 实现搜索附近的人. 搜索附近的POI是一个非常常见的功能,它的技术难点在于地理位置是二维的(经纬度)而我们常 ...

  10. Go语言学习笔记(八)golang 操作 Redis & Mysql & RabbitMQ

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 Reids 安装导入 go get github.com/garyburd/redigo/redis import ...

随机推荐

  1. storm的优化以及雪崩问题

    下图来说明什么是雪崩现象: 当spout发送的速度非常快,而bolt的处理速度很慢,spout源源不断地向内存中发送tuple,这样下去迟早会把内存撑爆,这样就叫做雪崩现象! 怎么处理雪崩问题呢 第一 ...

  2. metaq架构原理

      原创文章,转载请注明出处:http://jameswxx.iteye.com/blog/2034111 本来只是想看下metaq的文档,结果发现好乱,现在metaq其实有两个大分支了,一个是庄晓丹 ...

  3. elt区间分布

    select DATE_FORMAT(CURDATE(),'%Y%m%d') DateId,elt(interval(curnum,0, 10000,20000,30000,40000,50000, ...

  4. archlinux上安装sublime text

    因为sublime text不是开源所以在官方库没有收纳,但是在archlinuxcn上面有. #vim /etc/pacman.conf 在末尾添加: [archlinuxcn] SigLevel ...

  5. VB6 padleft padright

    Public Function PadLeft(ByVal s As String, ByVal i As Integer, ByVal c As String)    If i > LenB( ...

  6. DOS系统变量

    %ALLUSERSPROFILE% : 列出所有用户Profile文件位置.%APPDATA% : 列出应用程序数据的默认存放位置.%CD% : 列出当前目录.%CLIENTNAME% : 列出联接到 ...

  7. scala--函数式对象

    函数式对象 这次写点关于函数式对象的吧 class Rational(n:Int, d:Int) { // n,d 为类参数,scala会创造出同样带有这两个参数的主构造器.如果这个类没有主体,可以不 ...

  8. pyorient

    简介 pyorient是orientdb的python库 该库提供两种访问orientdb的方式:1.client 的方式 2.ogm 的方式(类似于ORM) 由于OGM 封装了client,且由于O ...

  9. C#中导出EXCEL服务器端不用安装OFFICE

    在实际开发过程中,有时候服务器端没安装OFFICE,你和服务器管理员去商量安装个OFFICE的时候,管理员很倔犟的不给你安装的时候,这个时候就可以考虑我这个方法是实现导出EXCEL了.如果你导出的EX ...

  10. gff/gtf格式

    1)gff3及gtf2简介 一个物种的基因组测序完成后,需要对这些数据进行解读,首先要先找到这些序列中转录起始位点.基因.外显子.内含子等组成元件在染色体中的位置信息(即注释)后才能再进行深入的分析. ...