String 操作
最后更新于:2022-04-02 04:51:36
String 操作
set(key,value,expiration):给数据库中名称为key的string赋予值value,expiration为过期时间,0表示不过期。
~~~
func StringTest(redisdb *redis.Client) {
err:=redisdb.Set("key1","hello",5 * time.Second).Err()
if err!=nil {
fmt.Println(err)
return
}
err=redisdb.Set("key1","hello",0 * time.Second).Err()
if err!=nil {
fmt.Println(err)
return
}
}
~~~
get(key):返回数据库中名称为key的string的value。
~~~
func StringTest(redisdb *redis.Client) {
result,err:=redisdb.Get("key1").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
~~~
getset(key, value):给名称为key的string赋予上一次的value。
~~~
func StringTest(redisdb *redis.Client) {
result,err:=redisdb.GetSet("key1","world").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
-----------------------------------------------------------
返回上一次的值hello,设置key1新值world
~~~
mget(key1, key2,…, key N):返回库中多个string的value。
假设redis中有key1:hello1,key2:hello2
~~~
func StringTest(redisdb *redis.Client) {
//获取key1,key2的值
result,err:=redisdb.MGet("key1","key2").Result()
if err!=nil {
fmt.Println(err)
return
}
for _,value:=range result {
fmt.Println(value)
}
}
-------------------------------------------------------
hello1
hello2
~~~
setnx(key,value,expiration):将 key 的值设为 value ,当且仅当 key 不存在,expiration为过期时间,0表示不过期。
~~~
func StringTest(redisdb *redis.Client) {
//获取key1,key2的值
result,err:=redisdb.SetNX("key1","hello3",0).Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
----------------------------------------------------------
false 因为key1已经存在,所以结果返回false
~~~
mset(pairs ...interface{}):批量设置多个string的值。
~~~
func StringTest(redisdb *redis.Client) {
result,err:=redisdb.MSet("key1","h1","key2","h2","key3","h3").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
~~~
msetnx(pairs ...interface{}):
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
即使只有一个给定 key 已存在, MSETNX 也会拒绝执行所有给定 key 的设置操作。
MSETNX 是原子性的,因此它可以用作设置多个不同 key 表示不同字段(field)的唯一性逻辑对象(unique logic object),所有字段要么全被设置,要么全不被设置。
~~~
func StringTest(redisdb *redis.Client) {
result,err:=redisdb.MSetNX("key1","1","key2","2").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
~~~
incr(key):名称为key的string增1操作。
~~~
func StringTest(redisdb *redis.Client) {
//设置key1-1
redisdb.Set("key1","1",0)
result,err:=redisdb.Incr("key1").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
-----------------------------------------------
2
~~~
incrby(key, integer):名称为key的string增加integer。
~~~
func StringTest(redisdb *redis.Client) {
//设置key1-1
redisdb.Set("key1","1",0)
result,err:=redisdb.IncrBy("key1",10).Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
----------------------------------------------------
11 key1变为11
~~~
decr(key):名称为key的string减1操作。
~~~
func StringTest(redisdb *redis.Client) {
//设置key1-10
redisdb.Set("key1","10",0)
result,err:=redisdb.Decr("key1").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
--------------------------------------------------
9
~~~
decrby(key, integer):名称为key的string减少integer。
~~~
func StringTest(redisdb *redis.Client) {
//设置key1-10
redisdb.Set("key1","10",0)
result,err:=redisdb.DecrBy("key1",4).Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
----------------------------------------------------
6
~~~
append(key, value):名称为key的string的值附加value。
~~~
func StringTest(redisdb *redis.Client) {
redisdb.Set("key1","abc",0)
result,err:=redisdb.Append("key1","def").Result()
if err!=nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
------------------------------------------------------
6 //返回6,append后字符串"abcdef"长度为6
~~~
';