GoLang Redis數據庫操作指令&go連接redis操作指令


  Redis數據庫(Remote Dictionary Server)遠程字典服務器

  

  下載地址 : 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 a@qq.com b@qq.com c@qq.com
  • srem 刪除指定數據

 srem email a@qq.com

  • smembers 獲取所有數據

 smembers email
  • sismember 判斷是否包含此數據

 sismember email a@qq.com

  • 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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM