redis字符串命令

来源:互联网 发布:mac dock 顺序 编辑:程序博客网 时间:2024/06/06 04:03

字符串命令是redis中最常见,最简单的命令。

1、set命令-设置指定key的值
redis中set命令用于设置给定 key的值,如果key已经存储其他值,则覆盖旧值。
语法:

set key_name value

版本:1.0.0及以上
返回值:
在redis 2.6.12以前版本,set命令总返回ok
从redis 2.6.12版本开始,set在设置操作成功完成时,才返回ok

redis 127.0.0.1:6379> SET key "value"OKredis 127.0.0.1:6379> GET key"value"redis 127.0.0.1:6379> SET key "new-value"OKredis 127.0.0.1:6379> GET key"new-value"

2、get命令-获取指定的key值
语法:

get key_name

版本:1.0.0及以上
返回值:返回key的值,如果key不存在时,返回nil。如果key不是字符串类型,那么返回一个错误。

127.0.0.1:6379> get mynumber"100"127.0.0.1:6379> get abc(nil)127.0.0.1:6379> get mylist(error) WRONGTYPE Operation against a key holding the wrong kind of value127.0.0.1:6379>

3、getrange命令-返回key中字符串值的子串
redis中getrange命令用于获取存储在指定key中字符串的子字符串。字符串的截取范围由start和end两个偏移量决定。
语法:

getrange keyname start end

版本:2.4.0及以上
返回值:
截取得到的子字符串。如果keyname类型不是string,报告对应的错误

127.0.0.1:6379> getrange mynumber 1 2"00"127.0.0.1:6379> getrange abc 1 2""127.0.0.1:6379> getrange mylist(error) ERR wrong number of arguments for 'getrange' command127.0.0.1:6379>

4、getset命令-将给定key的值设置为value,并返回key的旧值。
redis中getset命令用于设置指定key的值,并返回key的旧值。
语法:

getset  keyname vale

版本:1.0.0及以上
返回值;返回给定Key的旧值,当key没有旧值时,即key不存在时,返回nil。
当key存在但是不是字符串类型时,返回一个错误。

127.0.0.1:6379> getset mynumber "10000""100"127.0.0.1:6379> getset aaa(error) ERR wrong number of arguments for 'getset' command127.0.0.1:6379> getset mylist(error) ERR wrong number of arguments for 'getset' command127.0.0.1:6379>

5、getbit命令-对key所储存的字符串值,获取指定便宜上的位。
语法:

getbit keyname offset

版本:2.2.0及以上
返回值:
字符串值指定偏移量上的位(bit)
当偏移量offset比字符串值的长度大,或者key不存在时,返回0。

127.0.0.1:6379> getbit mynumber 3(integer) 1127.0.0.1:6379> getbit aaa 1(integer) 0127.0.0.1:6379> getbit mylist 1(error) WRONGTYPE Operation against a key holding the wrong kind of value

由于当字符串value的key的位可能为0和1。不存在也是0,所以这个命令不是很常用

6、mget命令-获取室友给定key的值
redis中mget命令用于返回所有(一个或多个)给定的key值。如果给定的key里边,有某个key不存在,那么这个key返回特殊值nil
语法:

mget key1 [key2 ... keyn]

版本:1.0.0及以上
返回值:
一个包含所有给定key的值的列表

127.0.0.1:6379> mget mynumber aaa mylist1) "10000"2) (nil)3) (nil)127.0.0.1:6379>

7、setbit命令-对key所储存的字符串值,设置或清除指定偏移上的位(bit)
语法:

setbit keyname offset value(0 or 1)

版本:2.2.0及以上
返回值:
指定偏移量原来的存储的位。
eg:

127.0.0.1:6379> setbit mynumber 2 0(integer) 1127.0.0.1:6379> getbit mynumber 2(integer) 0127.0.0.1:6379> get mynumber"\x110000"127.0.0.1:6379> setbit mynumber 2 1(integer) 0127.0.0.1:6379> getbit mynumber 1(integer) 0127.0.0.1:6379>127.0.0.1:6379> get mynumber"10000"

8、setex命令-将值value关联到key,给key设置过期时间
redis中setex命令为指定的key设置值及过期时间。如果key已经存在,setex命令将会替换旧的值。
语法:

setex keyname timeout value

版本:2.0.0
返回值:设置成功时返回OK
eg:

127.0.0.1:6379> setex testsetex 100 "just a test"OK127.0.0.1:6379> ttl testsetex(integer) 94127.0.0.1:6379> setex mylist 110 "second test"OK127.0.0.1:6379> get mylist"second test"

注意:不管key的value原来是什么类型,都会被重置为输入的value。

9、setrange命令-从指定偏移开始覆盖给定key所储存的字符串。
语法:

setrange keyname  offset value

版本:2.0.0
返回值:
被修改后的字符串长度。
eg:

redis 127.0.0.1:6379> SET key1 "Hello World"OKredis 127.0.0.1:6379> SETRANGE key1 6 "Redis"(integer) 11redis 127.0.0.1:6379> GET key1"Hello Redis"

错误情况:

127.0.0.1:6379> rpush mylist "abc"(integer) 1127.0.0.1:6379> get mylist(error) WRONGTYPE Operation against a key holding the wrong kind of value127.0.0.1:6379> get key1"Hello Redis"127.0.0.1:6379> setrange 100 "wuzhiming"(error) ERR wrong number of arguments for 'setrange' command127.0.0.1:6379> setrange 2 mylilst "wuzhiming"(error) ERR value is not an integer or out of range127.0.0.1:6379>

10、strlen命令-返回key所储存的字符串值的长度。
redis中strlen命令用于获取指定key所储存的字符串的长度。当key储存的不是字符串值时,返回一个错误。
语法:

strlen keyname

版本:2.2.0及以上
返回值:字符串的长度。当key不存在时,返回0
eg:

redis> SET mykey "Hello world"OKredis> STRLEN mykey(integer) 11redis> STRLEN nonexisting(integer) 0

11、mset命令-同时设置一个或多个key-value
redis中mset命令用于同时设置一个或多个key-value。其中value需要是string类型。
语法:

mset key1 value1 [key2 value2 ... keyn valuen]

版本:1.0.1
返回值:ok
eg:

127.0.0.1:6379> mset key2 "aaa" key3 "bbb" mylist "ccc"OK127.0.0.1:6379> get mylist"ccc"127.0.0.1:6379>

从例子可以看出,就算key原来是list类型,也会被覆盖为string类型。

12、msetnx命令:同时设置多个key-value。当且仅当所有给定key都不存在
redis中msetnx命令用于所有给定key都不存在时,同时设置一个或者多个key-value对。
语法:

msetnx key1 value1 [key2 value2 ... keyn valuen]

版本:1.0.1及以上
返回值:
当所有key都成功设置,返回1。如果所有给定key都设置失败(至少有一个key已经存在),那么返回0。

13、psetex命令-设置key的值的同时,以毫秒为单位设置key的生命时间。
语法:

psetex keyname EXPIRY_IN_MILLISECOND value

版本:2.6.0
返回值:设置成功返回ok
和setex一样,只是时间对应的单位变化了。

14、incr命令-将key中存储的数字值原子增加1。
redis中 incr命令将Key中存储的数字值增加1。
如果key不存在,那么key值会先被初始化为0,然后再执行incr操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
现在在64位(bit)有符号数字表示之内。
语法:

incr keyname

版本:1.0.0及以上
返回值:执行incr命令之后key的值。
eg:

127.0.0.1:6379> set testincr "100"OK127.0.0.1:6379> incr testincr(integer) 101127.0.0.1:6379> get testincr"101"127.0.0.1:6379> incr mylist(error) ERR value is not an integer or out of range127.0.0.1:6379>

15、incrby命令-将key所存储的值加上给定的增量值(increment)
redis-incrby命令将key中所存储的数值加上指定的增量值。
如果key不存在,那么key的值会被初始化为0,然后再执行incrby命令。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误,操作的值限制在64位有符号数字表示之内。
语法:

incrby keyname incrnumber

版本:1.0.0及以上
返回值:
加上指定的增量值之后,key的值。
eg:

127.0.0.1:6379> get testincr"101"127.0.0.1:6379> incrby testincr 2(integer) 103127.0.0.1:6379> get testincr"103"127.0.0.1:6379> incrby mylist 2(error) ERR value is not an integer or out of range127.0.0.1:6379> incrby aaa(error) ERR wrong number of arguments for 'incrby' command127.0.0.1:6379> incrby aaa 3(integer) 3

16、incrbyfloat命令-将key所存储的值加上给定的浮点增量值。
redis中incrbyfloat命令为key中所存储的值加上指定的浮点数增量值,如果key不存在,那么incrbyfloat会先将key的值设为0,再执行加法操作。
语法:

increbyfloat keyname incrnumber

版本:2.6.0及以上
返回值:
执行命令后key的值。
eg:

127.0.0.1:6379> set float "0.01"OK127.0.0.1:6379> get float"0.01"127.0.0.1:6379> incrbyfloat float "1.2""1.21"127.0.0.1:6379> get float"1.21"127.0.0.1:6379> get testincr"103"127.0.0.1:6379> incrbyfloat testincr "0.01""103.01000000000001"127.0.0.1:6379> incrbyfloat mylist "0.01"(error) ERR value is not a valid float

17、decr命令-将key中存储的数字值减1
redis中decr命令将key中存储的数字值减1。如果key不存在,那么key的值会先被初始化为0,然后再执行decr操作。
如果值包含错误的类型,或者字符串的值不能表示为数字,那么返回一个错误。
语法:

decr keyname

版本:1.0.0及以上
返回值:执行命令之后key的值。
eg:

# 对存在的数字值 key 进行 DECRredis> SET failure_times 10OKredis> DECR failure_times(integer) 9# 对不存在的 key 值进行 DECRredis> EXISTS count(integer) 0redis> DECR count(integer) -1# 对存在但不是数值的 key 进行 DECRredis> SET company YOUR_CODE_SUCKS.LLCOKredis> DECR company(error) ERR value is not an integer or out of range

18、decrby命令-key所存储的值减去给定减量值。
redis中decrby命令将key所存储的值减去指定的减量值。
如果key不存在,那么key的值会先被初始化为0,然后执行decrby操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
语法:

decrby keyname number

版本:1.0.0及以上
返回值:减去指定减量值之后,key的值。
eg:

# 对已存在的 key 进行 DECRBYredis> SET count 100OKredis> DECRBY count 20(integer) 80# 对不存在的 key 进行DECRBYredis> EXISTS pages(integer) 0redis> DECRBY pages 10(integer) -10

19、append命令-如果key已经存在并且是一个字符串,append命令将key原来的值末尾追加一个值。
redis中append命令用于为指定的key追加值。如果key已经存在并且是一个字符串,append命令将value追加到Key原来的值的末尾。如果key不存在,append就简单地将给定key设为value,就像执行set key value一样。
语法:

append keyname newvalue

版本:2.0.0及以上
返回值:追加指定值之后,key中字符串的长度。
eg:

# 对不存在的 key 执行 APPENDredis> EXISTS myphone               # 确保 myphone 不存在(integer) 0redis> APPEND myphone "nokia"       # 对不存在的 key 进行 APPEND ,等同于 SET myphone "nokia"(integer) 5                         # 字符长度# 对已存在的字符串进行 APPENDredis> APPEND myphone " - 1110"     # 长度从 5 个字符增加到 12 个字符(integer) 12redis> GET myphone"nokia - 1110"
原创粉丝点击