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 ~~~