当前位置:操作系统 > Unix/Linux >>

Redis String类型数据常用的16条命令总结

Redis String类型数据常用的16条命令总结
 
描述:String 类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或序列化对象。
 
        常用方法:
      1, set方法:
set  <key>  <value>       设置key的值为value
(1)对不存在的key使用set:
[plain] 
redis 127.0.0.1:6379> set name 'zhangsan'  
OK  
redis 127.0.0.1:6379> get name  
"zhangsan"  
 (2)对已存在的key使用set,更换key的值:
[plain] 
redis 127.0.0.1:6379> set name 'lisi'  
OK  
redis 127.0.0.1:6379> get name  
"lisi"  
 2,setnx 方法:
 
 setnx  <key>   <value>     当key不存在时,设置key的值为value,设置成功,返回1,设置失败,返回0.
 
[plain] 
redis 127.0.0.1:6379> setnx name 'wangwu'  
(integer) 0  
redis 127.0.0.1:6379> get name  
"lisi"  
redis 127.0.0.1:6379> setnx name2 'wangwu'  
(integer) 1  
redis 127.0.0.1:6379> get name2  
"wangwu"  
 3,setex 方法:
 
setex  <key>  <seconds>  <value>    设置key的值为value,过期时间为seconds(单位为秒).如果key已经存在,
 
则会覆盖其值。过期之后,返回的是为nil.
[plain] 
redis 127.0.0.1:6379> setex name 3 'zhangsan'  
OK  
redis 127.0.0.1:6379> get name  
"zhangsan"  
redis 127.0.0.1:6379> get name  
(nil)  
redis 127.0.0.1:6379> setex name 30 'zhangsan'  
OK  
redis 127.0.0.1:6379> get name  
"zhangsan"  
redis 127.0.0.1:6379> setex name 30 'lisi'  
OK  
redis 127.0.0.1:6379> get name  
"lisi"  
4,setrange方法:
setrange  <key>  <offset>  <value>   用 value 参数覆盖给定 key 所储存的字符串值,下标从0开始,偏移量从 offset 开始。如果key不存在,则当做空白字符串处理。此命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充。注意你能使用的最大偏移量是 2^29-1(536870911) ,因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内。如果你需要使用比这更大的空间,你可以使用多个 key 。
[plain] 
redis 127.0.0.1:6379> set name 'zhangsan'  
OK  
redis 127.0.0.1:6379> get name  
"zhangsan"  
redis 127.0.0.1:6379> setrange name 5 '_si'  
(integer) 8  
redis 127.0.0.1:6379> get name  
"zhang_si"  
redis 127.0.0.1:6379> get name3  
(nil)  
redis 127.0.0.1:6379> setrange name3 4 'lisi'  
(integer) 8  
redis 127.0.0.1:6379> get name3  
"\x00\x00\x00\x00lisi"  
redis 127.0.0.1:6379>  
 
5,mset方法:
mset  <key>  <value> [<key>   <value> ...]   同时设置多个key-value对,如果key已经存在,则会覆盖以前的值。
[plain] 
redis 127.0.0.1:6379> get name  
"zhang_si"  
redis 127.0.0.1:6379> mset name 'zhangsan' name2 'lisi' name3 'wangwu'  
OK  
redis 127.0.0.1:6379> get name  
"zhangsan"  
redis 127.0.0.1:6379> get name2  
"lisi"  
redis 127.0.0.1:6379> get name3  
"wangwu"  
redis 127.0.0.1:6379>  
 
6,msetnx方法:
msetnx  <key>  <value> [<key>   <value> ...]   类似与mset方法,同时设置多个key-value对,当且仅当所给定的key都不存在时。如果操作成功,返回1,失败返回0.
[plain] 
redis 127.0.0.1:6379> set age 12  
OK  
redis 127.0.0.1:6379> get age  
"12"  
redis 127.0.0.1:6379> msetnx age 14 age1 34 age2 55  
(integer) 0  
redis 127.0.0.1:6379> get age1  
(nil)  
redis 127.0.0.1:6379> get age  
"12"  
redis 127.0.0.1:6379> msetnx key1 'hello' key2 'word'  
(integer) 1  
redis 127.0.0.1:6379> get key1  
"hello"  
redis 127.0.0.1:6379> get key2  
"word"  
redis 127.0.0.1:6379>  
 
7,append方法:
append <key> <value> 将value追加到原来的key值之后,如果key本不存在,则默认创建一个key-value对。操作成功返回1,失败返回0.
[plain] 
redis 127.0.0.1:6379> set name 'zhangshan'  
OK  
redis 127.0.0.1:6379> get name  
"zhangshan"  
redis 127.0.0.1:6379> append name ' is 12.'  
(integer) 16  
redis 127.0.0.1:6379> get name  
"zhangshan is 12."  
redis 127.0.0.1:6379> get addr  
(nil)  
redis 127.0.0.1:6379> append addr '32 env.'  
(integer) 7  
redis 127.0.0.1:6379> get addr  
"32 env."  
redis 127.0.0.1:6379>  
 
8 ,get 方法:
get <key> 取出 key的值。
9, mget 方法:
mget <key> [<key>...] 取出多个key的值。如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil。
[plain] 
redis 127.0.0.1:6379> mget name name1  name2 name3  
1) "zhangshan is 12."  
2) (nil)  
3) "lisi"  
4) "wangwu"  
redis 127.0.0.1:6379>  
 
10, getrange 方法:
getrange <key> <start> <end> 获取key对应值的子字符串,从偏移量start到end之间的串(包含start和end),value最左边的一个字符的索引为0以此类推,最后一个字符的索引为字符串的总长度减一,反过来类似。这与Python中的切片操作及其类似。如,字符串"zhangsan"对应的正向下标如下图中的下标一所示,反向下标如下图中的下标二所示。
 
下标一: 0 1 2 3 4 5 6 7
  z h a n g s a n
下标二: 0 -7 -6 -5 -4 -3 -2 -1
[plain] 
redis 127.0.0.1:6379> set name 'zhangsan'  
OK  
redis 127.0.0.1:6379> getrange name 0 4  
"zhang"  
redis 127.0.0.1:6379> getrange name 0 20  
"zhangsan"  
redis 127.0.0.1:6379> getrange name 0 -1  
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,