• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

GoLangRedis数据库操作指令&go连接redis操作指令

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  

  下载地址 : Link

   下载后

     

   解压后

   绿色为客户端

   红色为服务端

  

 

 

  Redis命令参考API手册

 

  1:  http://doc.redisfans.com/

 

     2: http://redisdoc.com/index.html

 

  

 

   Redis 的 五大数据类型

  1: string(字符串)

  2: Hash(哈希)

  3: List(列表)

  4: Set(集合)

  5: zset(sorted set) 有序集合

 

 

 

 Redis数据库的 Creat Read Update Delete(增删改查)操作

 

  • string类型操作

  • 设置key value

      set key value (set数据时,存在就修改,不存在就添加)

  • 获取key value

   get key

 

  • 切换数据库

  • 默认创建16个数据库(0-15)

   select index

  • 查看所有的key

   keys *

 

  • 查看当前数据库的key,value数量(长度)

   dbsize

 

  • 清空当前数据库数据(key,value)(谨慎操作)

   flushdb

  • 清空所有数据库的数据(key,value)(谨慎操作)

   flushall

 

  • 删除指定数据

   del 对象 key

   del monster name

  • 让数据在指定时间内获取,超时变nil

   setex name 10 zhangsan

 

  • 一次设置多个key,value

  mset name1 zhangsan name2 lisi
  • 一次获取多个key,value

  mget name1 name2

  • Hash数据类型操作

  • 设置单个数据 hset 名称 key value

   hset hero name tom

  • 获取单个数据 hget 名称 key

   hget hero name

 

  • 设置多个数据

  hmset monster2 name dybf age 18 sex man
  • 获取多个数据

  • 方法1:指定key获取

  hmget monster2 name age sex
  • 方法2:直接获取所有key,value

  hgetall monster2

  • 获取对象中有几个key,value(长度)

  • hlen 对象

  hlen monster
  • 判断在对象中是否有指定的key

  hexists 对象 key

  1表示有

  0表示无

 

  • List链表 数据类型操作

  • 有序的存储数据
  • 元素的值可以重复

  

  • lpush 从头插入数据

  lpush hero a b c
  • rpush 从尾插入数据

  rpush hero d e f

  • lpop 从头部弹出一个数据(删除)

   lpop hero

  • rpop 从尾部弹出一个数据(删除)

  rpop hero 

  • del 删除对象所有数据

  del hero
  • 获取元素方法

  lrange key start stop

  irange monster 0 -1

  (0表示从头开始,-1表示以最后一个数据结束)

 

  • list存储理解图

 

 

 

  • list操作实例图:

  

 

  • Set集合数据类型操作

  • 底层是HashTable

  • 无序存储

  • 元素值不可重复

 

  • sadd 添加数据

 sadd email [email protected] [email protected] [email protected]
  • srem 删除指定数据

 srem email [email protected]

  • smembers 获取所有数据

 smembers email
  • sismember 判断是否包含此数据

 sismember email [email protected]

  • Set类型实例

 

 

 

  Redis 在GO中的操作

  • 在Go中安装 Redis库插件

  • 目的是可以在go中直接使用redis操作指令

  • 前提是你装了git,才能执行下列语句

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

  安装命令:

  go get github.com/gomodule/redigo/redis

  • GO中String类型操作Redis数据库案例

 1 package main
 2 
 3 import (
 4     "fmt"
 5 
 6     "github.com/gomodule/redigo/redis"
 7 )
 8 
 9 func main() {
10     conn, err := redis.Dial("tcp""127.0.0.1:6379")
11     if err != nil {
12         fmt.Println("GO连接数据库127.0.0.1失败:", err)
13         return
14     }
15     //fmt.Println("GO连接数据库成功\n", conn)
16     /* 往数据库里 写入数据 set */
17     _, err2 := conn.Do("set""name""tom")
18     if err != nil {
19         fmt.Println("set数据错误: ", err2)
20         return
21     }
22     /*延迟关闭服务器*/
23     defer conn.Close()
24     fmt.Println("set数据成功", conn)
25 
26     /* 往数据库里 请求数据 get
27     r, err3 := redis.String(conn.Do("get""name"))
28     */
29     r, err3 := conn.Do("get""name")
30     if err != nil {
31         fmt.Println("set数据错误: ", err3)
32         return
33     }
34 
35     /* 把数据返回值从 接口 转换成 string类型 */
36     result, _ := redis.String(r, err3)
37 
38     fmt.Println("get数据成功", result)
39 }
View Code


  • GO中Hash类型操作Redis数据库案例

  若遇下面到报错:解决方法 del 对象

  先删除这个对象 在创建获取即可

 WRONGTYPE Operation against a key holding the wrong kind of value

   

 1 package main
 2 
 3 import (
 4     "fmt"
 5 
 6     "github.com/gomodule/redigo/redis"
 7 )
 8 
 9 func main() {
10 
11     conn, err := redis.Dial("tcp""127.0.0.1:6379")
12     if err != nil {
13         fmt.Println("连接数据库失败: ", err)
14         return
15     }
16     defer conn.Close()
17 
18     /* 一次操作写入 多个数据 */
19     _, err2 := conn.Do("HMSet""hero""name""托塔李天王""age", 18, "sex""")
20 
21     if err != nil {
22         fmt.Println("向 Redis数据库 写入数据 失败! :", err2)
23         return
24     }
25 
26     /* 一次 操作 获取 多个数据 */
27     result, err3 := redis.Strings(conn.Do("HGetAll""hero"))
28 
29     if err3 != nil {
30         fmt.Println("向 Redis数据库 请求数据 失败! ", err3)
31         return
32     }
33     for value, key := range result {
34         fmt.Printf("Hero[%v] = [%v]\n", value, key)
35     }
36 
37 }
38 
39 //输出:
40 Hero[0] = [name]
41 Hero[1] = [托塔李天王]
42 Hero[2] = [age]       
43 Hero[3] = [18]        
44 Hero[4] = [sex]       
45 Hero[5] = [男] 
View Code

 

 

  • Redis 的 连接池

  • 提高连接数据库效率

  

 1 package main
 2 
 3 import (
 4     "fmt"
 5 
 6     "github.com/gomodule/redigo/redis"
 7 )
 8 
 9 var (
10     //Pool 全局变量 连接池Pool
11     Pool *redis.Pool
12 )
13 
14 //当程序启动时初始化执行,初始化连接池
15 func init() {
16     Pool = &redis.Pool{
17         MaxIdle:     10,  //最大空闲 连接数
18         MaxActive:   0,   //与数据库的最大连接数 0表示不限制
19         IdleTimeout: 100, //最大空闲时间,超过此事件自动回收连接
20         Dial: func() (redis.Conn, error) {
21             //连接的IP/端口
22             return redis.Dial("tcp""127.0.0.1:6379")
23         },
24     }
25 }
26 
27 func main() {
28     //从连接池中获取一个连接
29     conn := Pool.Get()
30 
31     defer conn.Close()
32 
33     //往数据库中写入数据
34     _, err := conn.Do("set""name""杰克奥特曼")
35     if err != nil {
36         fmt.Println("往Redis中写入数据失败")
37         return
38     }
39 
40     //从数据库中获取数据
41     result, err := redis.String(conn.Do("get""name"))
42     if err != nil {
43         fmt.Println("从Redis中获取数据失败!")
44         return
45     }
46     fmt.Println("从Redis中获取数据成功!")
47     fmt.Printf("name:%v", result)
48 }
View Code

 

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go1.14.3安装micro报错处理记录发布时间:2022-07-10
下一篇:
77_Go基础_1_45空接口发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap