午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

【Go開源寶藏】Go 語(yǔ)言操作 Redis

 小生凡一 2022-06-05 發(fā)布于福建

目錄

1. Redis簡(jiǎn)介

Redis支持諸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、帶范圍查詢的排序集合(sorted sets)、位圖(bitmaps)、hyperloglogs帶半徑查詢流的地理空間索引(geospatial indexes)等數(shù)據(jù)結(jié)構(gòu)。

方法作用參數(shù)
Set添加kv鍵 string, 值 interface{}, 過期時(shí)間 time.Duration
Get獲取值鍵 string
Del刪除kv鍵 …string
HSet給散列添加kv散列的鍵, 散列中的鍵 string, 值 interface{}
HGet獲取散列kv的值散列的鍵, 散列中的鍵 string
FlushAll刪光
Ping心跳驗(yàn)證
Exists確認(rèn)鍵是否存在鍵 …string
Expire給key設(shè)置過期時(shí)間鍵 string, 過期時(shí)間 time.Duration
Incr增加鍵鍵 string
Close關(guān)閉連接
Watch監(jiān)聽鍵,鍵出現(xiàn)時(shí)執(zhí)行方法方法 func(*Tx) error, 鍵 …string
Decr值減一鍵 string

2. Go語(yǔ)言連接Redis

驅(qū)動(dòng):github.com/go-redis/redis

  • 定義 redisClient
var Redis *redis.Client
  • 連接
func connect() {
client := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
//Password: "redisPassword",  // 無密碼,就這樣就好了
DB: 3,
})
_, err := client.Ping().Result() // 心跳驗(yàn)證
if err != nil {
log.Println(err)
panic(err)
}
Redis = client
fmt.Println("connect success")
}

3. String 操作

3.1 Set & Get

Set 源碼

可以看到這個(gè)set的第一個(gè)參數(shù)就是key,第二個(gè)參數(shù)是value,第三個(gè)參數(shù)就是過期時(shí)間。
在這里插入圖片描述

Get 源碼
在這里插入圖片描述

  • set Key、Value以及過期時(shí)間

Key 為Fan,Value為One,過期時(shí)間為3s

redisClient.Set("Fan","One",3*time.Second)
  • 3s內(nèi)打印出來
val := redisClient.Get("Fan")
if val == nil {
fmt.Println("Value get error")
}
  • 3s過后
time.Sleep(3*time.Second)
fmt.Println("3s passing")
val = redisClient.Get("Fan")
fmt.Println("name ", val)
  • 結(jié)果

第一個(gè)是在3s內(nèi),是可以打印出來的。

第二個(gè)是過了3s的,已經(jīng)是nil了。
在這里插入圖片描述

del 操作與 get 操作類似

3.2 Incr & Incrby

3.2.1 Incr 加 1

redisClient.Set("Fan", "1", 3*time.Second)
val := redisClient.Get("Fan")
if val == nil {
fmt.Println("Value get error")
}
fmt.Println("Incr before:", val)
num := redisClient.Incr("Fan")
fmt.Println("Incr after:", num)
  • 結(jié)果

在這里插入圖片描述

3.2.2 Incrby 加 val

Incrby(key, integer):名稱為key的string增加integer

redisClient.Set("One", "1", 3*time.Second)
val := redisClient.Get("One")
if val == nil {
fmt.Println("Value get error")
}
fmt.Println("IncrBy before:", val)
num := redisClient.IncrBy("One",2)
fmt.Println("IncrBy after:", num)
  • 結(jié)果

在這里插入圖片描述

3.3 MSet & MGet

設(shè)置多個(gè) key value

MSet(key1, value1, key2, value2, key3, value3)

獲取多個(gè)key

MGet(key1, key2, key3)

redisClient.MSet("Fan","One", "1","2","key1","value1")
val := redisClient.MGet("Fan","1","key1")
if val  == nil {
fmt.Println("Value get error")
}
fmt.Println(val)
  • 結(jié)果

在這里插入圖片描述

3.4 總結(jié)

做一些總結(jié),就不再過多展示了

操作解釋
Set(key, value)給數(shù)據(jù)庫(kù)中名稱為key的string賦予值valueget(key):返回?cái)?shù)據(jù)庫(kù)中名稱為key的string的value
GetSet(key, value)給名稱為key的string賦予上value的值
Del(Key)刪除名稱為key的value
MSet(key N, value N)批量設(shè)置多個(gè)string的值
MGet(key1, key2,…, key N)返回庫(kù)中多個(gè)string的value
SetNX(key, value)添加string,名稱為key,值為value
MSetNX(key N, value N)如果所有名稱為key i的string都不存在
SetXX(key, time, value)向庫(kù)中添加string,設(shè)定過期時(shí)間time
Incr(key)名稱為key的string增1操作
Incrby(key, integer)名稱為key的string增加integer
Decr(key)名稱為key的string減1操作
Decrby(key, integer)名稱為key的string減少integer
Append(key, value)名稱為key的string的值附加valuesubstr(key, start, end):返回名稱為key的string的value的子串

最后提醒一下redis的默認(rèn)過期時(shí)間不過期,所以如果沒有設(shè)置過期時(shí)間的話,要手動(dòng)del

val := redisClient.MGet("Fan","1","key1")
if val  == nil {
fmt.Println("Value get error")
}
fmt.Println(val)
res := redisClient.Del("1")
fmt.Println(res)

在這里插入圖片描述
已經(jīng)沒有這個(gè)value
在這里插入圖片描述

4. List 操作

4.1 RPush

在名稱為key的list尾添加一個(gè)值為value的元素

val:=redisClient.RPush("F", []string{"One", "Two", "Three","Four"})
if val == nil {
fmt.Println("Value get error")
}
fmt.Println(val)

在這里插入圖片描述

4.2 LLen & LRange

  • LLen:返回名稱為key的list的長(zhǎng)度
  • LRange:返回名稱為key的list中start至end之間的元素
val:=redisClient.RPush("F", []string{"One", "Two", "Three","Four"})
if val == nil {
fmt.Println("Value get error")
}
fmt.Println("F List:",val)
val = redisClient.LLen("F")
fmt.Println("len:",val)
res := redisClient.LRange("F",0,2)
fmt.Println("LRange:",res)

在這里插入圖片描述

4.3 總結(jié)

操作名稱
RPush(key, value)在名稱為key的list尾添加一個(gè)值為value的元素
LPush(key, value)在名稱為key的list頭添加一個(gè)值為value的 元素
LLen(key)返回名稱為key的list的長(zhǎng)度
LRange(key, start, end)返回名稱為key的list中start至end之間的元素
LTrim(key, start, end)截取名稱為key的list
LIndex(key, index)返回名稱為key的list中index位置的元素
LSet(key, index, value)給名稱為key的list中index位置的元素賦值
LRem(key, count, value)刪除count個(gè)key的list中值為value的元素
LPop(key)返回并刪除名稱為key的list中的首元素
RPop(key)返回并刪除名稱為key的list中的尾元素
BLPop(key1, key2,… key N, timeout)lpop命令的block版本
BRPop(key1, key2,… key N, timeout)rpop的block版本
RPopLPush(srckey, dstkey)返回并刪除名稱為srckey的list的尾元素,并將該元素添加到名稱為dstkey的list的頭部

參考鏈接

https://blog.csdn.net/weizhong1988/article/details/88048246

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多