Redis数据库部分命令
字符串相关指令
关键字 | 用法 | 指令作用 |
---|---|---|
append | append 键 值 | 向键对应的值中追加内容 |
bitcount | bitcount key [start] [end] | 计算(指定位置)的字符中为1的比特位的数量 |
bitop | bitop 参数 destkey key1 key2 … | 将ky1与key2进行相对应的逻辑运算,并将结果赋给destkey |
decr | decr key | 将key中存储的数字的值减1 |
decrby | decrby key num | 将key中存储的数字的值减少num |
get | get key | 获取key对应的value值 |
gitbit | gitbit key offset | 获取key对应的value值指定位置的bit值 |
getrange | gitrange key start end | 获取指定的索引位置的子字符串 |
getset | getset key value | 获取key的上一个值并且赋新的value值(key存在并且有值) |
incr | incr key | 将key中的数字的值加1 |
incrby | incrby key num | 将key中的数字的值增加num(整数) |
incrbyfloat | incrbyfloat key num | 将key中的数字的值增加num(小数) |
mget | mget key … | 同时查询多个key对对应的值 |
mset | mset key value … | 同时给一个或多个键值对赋值 |
msetnx | msetnx key value … | 同时给一个或多个键值对赋值,但是只要有一个键值对已存在,则所有的赋值失效 |
psetex | psetex key num value | 创建键值对,并且设置生存时间为num毫秒 |
set | set key value | 给key关联字符串value |
setbit | setbit key offset value | 给key指定的位置赋予bit值(0或1) |
setex | setex key time value | 将key与value关联,并且设置key的生存时间为time |
setnx | setnx key value | 将value赋给key,若key存在则不做任何操作 |
setrange | setrange key index value | 对key从索引位置index开始使用value替换(仅替换value长度对应位置的字符) |
strlen | strlen key | 返回key对应字符串的长度 |
append
语法:append key value
作用:
当key存在的时候,直接在对应值的后面追加value;
当key不存在的时候,直接将key的值设定为value,效果与set key value类似。
例如:
key不存在时:
47.106.35.41:6379> append appends appends
(integer) 7
47.106.35.41:6379> get appends
"appends"
当key不存在时:
47.106.35.41:6379> get appends
"appends"
47.106.35.41:6379> append appends 123
(integer) 10
47.106.35.41:6379> get appends
"appends123"
bitcount
语法:bitcount key [start] [end]
作用:
当设置了开始值start和结束值end后,则会查询key对应的value值索引范围内的字符中比特值为1的数量和,其中start、end参数可以为负值,功能与字符串的索引类似;
当未设置start、end值时,则会查询key对应的value值的所有字符串中比特值为1的数量和。
当key对应的value值不存在时,结果为0.
例如:
当value有值且未设置start、end值:
47.106.35.41:6379> get username
"hello"
47.106.35.41:6379> bitcount username
(integer) 21
当value有值且设置了start、end值:
47.106.35.41:6379> get username
"hello"
47.106.35.41:6379> bitcount username 1 3
(integer) 12
当没有value值时:
47.106.35.41:6379> get aaa
(nil)
47.106.35.41:6379> bitcount aaa
(integer) 0
bitop
语法:bitop 参数 destkey key1 key2 …
作用:
在指令中的参数共有四个:and、or、xor、not,其作用分别是:
and - 将后面的key进行逻辑与运算,并且将最后的值赋给destket;
or - 将后面的key进行逻辑或运算,并且将最后的值赋给destket;
xor - 将后面的key进行逻辑异或运算,并且将最后的值赋给destkey;
not - 将后面的key进行逻辑非运算,并且将最后的值赋给destkey,注意,这儿的key只有一个!!!
示例:
首先创建两个键值对
127.0.0.1:6379> set key1 abcd
OK
127.0.0.1:6379> set key2 dcba
OK
and参数:
127.0.0.1:6379> bitop and destkey key1 key2
(integer) 4
127.0.0.1:6379> get destkey
"`bb`"
or参数:
127.0.0.1:6379> bitop or destkey key1 key2
(integer) 4
127.0.0.1:6379> get destkey
"ecce"
xor参数:
127.0.0.1:6379> bitop xor destkey key1 key2
(integer) 4
127.0.0.1:6379> get destkey
"\x05\x01\x01\x05"
not参数:
127.0.0.1:6379> bitop not destkey key1
(integer) 4
127.0.0.1:6379> get destkey
"\x9e\x9d\x9c\x9b"
decr
语法:decr key
作用:
如果key不存在,则会先对key进行赋默认值,默认值为0,再进行减1运算;
如果key存在且值为数字时,就会单纯将key对应数字的value值减1;
如果key存在但值不为数字时,会报错。
例如:
当key存在时:
127.0.0.1:6379> set key1 123
OK
127.0.0.1:6379> decr key1
(integer) 122
当key不存在时:
127.0.0.1:6379> get key2
(nil)
127.0.0.1:6379> decr key2
(integer) -1
127.0.0.1:6379> get key2
"-1"
decrby
语法:decrby key num
作用:
当key不存在,则会先对key进行赋默认值,默认值为0,再进行减少num运算;
当key存在时,就会单纯将key对应数字的value值减num。
当key存在但值不为数字时,会报错。
例如:
当key存在时:
127.0.0.1:6379> get key1
"122"
127.0.0.1:6379> decrby key1 20
(integer) 102
127.0.0.1:6379> get key1
"102"
当key不存在时:
127.0.0.1:6379> get ley2
(nil)
127.0.0.1:6379> decrby key2 20
(integer) -20
127.0.0.1:6379> get key2
"-20"
get
语法:get key
作用:
当key存在时,直接返回key对应的value的值;
当key不存在时,返回null;
当value值不为字符串时,就会报错。
例如:
当key不存在时:
127.0.0.1:6379> get key1
(nil)
当key存在且是字符串时:
127.0.0.1:6379> get key1
"abvc"
当key存在但不是字符串时:
127.0.0.1:6379> LPUSH key1 redis mongodb mysql
(integer) 3
127.0.0.1:6379> get key1
(error) WRONGTYPE Operation against a key holding the wrong kind of value时:
getbit
语法:getbit key offset
作用:
获取key对应的value上,指定位置的bit值。
示例:
127.0.0.1:6379> setbit key2 10 1
(integer) 0
127.0.0.1:6379> getbit key2 3
(integer) 0
127.0.0.1:6379> getbit key2 10
(integer) 1
getrange
语法:getrange key start end
作用:
获取指定的位置的子字符串,索引位置从start至end,包括start和end本身对应的索引位置的值,且start与end可以为负数。
示例:
127.0.0.1:6379> get key1
"hello,word!"
获取中间部分子串:
127.0.0.1:6379> getrange key1 0 6
"hello,w"
获取的索引为负:
127.0.0.1:6379> getrange key1 0 -1
"hello,word!"
获取的索引大于字符串长度:
127.0.0.1:6379> get key1
"hello,word!"
127.0.0.1:6379> getrange key1 0 100
"hello,word!"
getset
语法:getset key value
作用:
当key存在时,获取key的值,并且将新的value值覆盖key的上一个值;
当key存在但值不为字符串类型时,会返回一个错误;
当key不存在时,返回nil,并将新的值赋给key。
示例:
当key存在且key中值为字符串类型:
127.0.0.1:6379> get username
"hellokitty"
127.0.0.1:6379> getset username hello
"hellokitty"
127.0.0.1:6379> get username
"hello"
当key存在但key中值不为字符串类型:
127.0.0.1:6379> LPUSH key1 redis mongodb mysql
(integer) 3
127.0.0.1:6379> getset key1 123
(error) WRONGTYPE Operation against a key holding the wrong kind of value
当key不存在时:
127.0.0.1:6379> get key2
(nil)
127.0.0.1:6379> getset key2 100
(nil)
127.0.0.1:6379> get key2
"100"
incr
语法:incr key
作用:
当key存在且key中存储的值为数字时,会将值加1;
当key不存在时,会先将key赋值为0,再将值加1;
当key存在但值不为数字时,会报错。
示例:
当key不存在时:
127.0.0.1:6379> get key2
(nil)
127.0.0.1:6379> incr key2
(integer) 1
127.0.0.1:6379> get key2
"1"
当key存在且值为数字时:
127.0.0.1:6379> get key2
"1"
127.0.0.1:6379> incr key2
(integer) 2
127.0.0.1:6379> get key2
"2"
当key存在但不为数字时:
127.0.0.1:6379> get key2
"100aaa"
127.0.0.1:6379> incr key2
(error) ERR value is not an integer or out of range
incrby
语法:incrby key num
作用:
当key不存在时,会先将key赋值为0,再将值加num;
当key存在且key中存储的值为数字时,会将值加num;
当key存在但值不为数字时,会报错。
示例:
当key不存在时:
127.0.0.1:6379> get key2
(nil)
127.0.0.1:6379> incrby key2 10
(integer) 1
127.0.0.1:6379> get key2
"10"
当key存在且值为数字时:
127.0.0.1:6379> get key2
"10"
127.0.0.1:6379> incrby key2 10
(integer) 2
127.0.0.1:6379> get key2
"20"
当key存在但不为数字时:
127.0.0.1:6379> get key2
"100aaa"
127.0.0.1:6379> incrby key2 10
(error) ERR value is not an integer or out of range
incrbyfloat
语法:incrbyfloat key num
作用:
当key不存在时,会先将key赋值为0,再将值加num;
当key存在且key中存储的值为数字时,会将值加num;
当key存在但值不为数字时,会报错。
示例:
当key不存在时:
127.0.0.1:6379> get key2
(nil)
127.0.0.1:6379> incrbyfloat key2 10.5
(integer) 1
127.0.0.1:6379> get key2
"10.5"
当key存在且值为数字时:
127.0.0.1:6379> get key2
"10.5"
127.0.0.1:6379> incrbyfloat key2 10.5
"21"
当key存在但值不为数字时:
127.0.0.1:6379> get key2
"21aaa"
127.0.0.1:6379> incrbyfloat key2 10.5
(error) ERR value is not a valid float
mget
语法:mget key …
作用:
可以同时查询多个key所对应的值。
示例:
127.0.0.1:6379> mget key1 key2
127.0.0.1:6379> mget key1 key2
1) "21"
2) "21aaa"
mset
语法:mset key value …
作用:
可以同时给多个键值对赋值。
示例:
127.0.0.1:6379> mset key1 123 key2 abc
OK
127.0.0.1:6379> get key1
"123"
127.0.0.1:6379> get key2
"abc"
msetnx
语法:msetnx key value …
作用:
当msetnx后面的所有key不存在的时候,效果与mset一样;
当msetnx后面的key只要有一个存在,整个语句的赋值都无效。
示例:
当msetnx后面的所有key不存在时:
127.0.0.1:6379> msetnx key3 aaa key4 bbb
(integer) 1
127.0.0.1:6379> mget key3 key4
1) "aaa"
2) "bbb"
当msetnx后面的key有存在的时:
127.0.0.1:6379> msetnx key4 123
(integer) 0
127.0.0.1:6379> get key4
"bbb"
psetex
语法:psetex key num value
作用:
创建键值对,并且将键值对的生存时间设置为num毫秒。
示例:
127.0.0.1:6379> psetex key5 5000 abc
OK
127.0.0.1:6379> ttl key5
(integer) 1 # 指生存时间剩余1秒
127.0.0.1:6379> ttl key5
(integer) -2
set
语法:set key value
作用:
当key不存在时,直接将value关联到key;
当key存在时,会用value覆盖key的旧值。
示例:
当key不存在时:
127.0.0.1:6379> set key1 abc
OK
127.0.0.1:6379> get key1
"abc"
当key存在时:
127.0.0.1:6379> get key1
"abc"
127.0.0.1:6379> set key1 123
OK
127.0.0.1:6379> get key1
"123"
setbit
语法:setbit key offset value
作用:
当key不存在时,会自动生成一个新的字符串;
当key存在时,对key对应值的指定位置赋bit(0或1),注意offset参数的值必须大于或等于0.
示例:
127.0.0.1:6379> setbit key3 10 1
(integer) 0
127.0.0.1:6379> getbit key3 1
(integer) 0
127.0.0.1:6379> getbit key3 10
(integer) 1
setex
语法:setex key time value
作用:
当key不存在时,将key与value关联并且给key设置生存时间为time秒;
当key存在时,会覆盖原本的value值并设置生存时间为time秒。
示例:
127.0.0.1:6379> setex key1 10 aaa
OK
127.0.0.1:6379> ttl key1
(integer) 5 # 存活时间还剩5秒
127.0.0.1:6379> ttl key1
(integer) -2 # 死亡
setnx
语法:setnx key value
作用:
当key不存在时,将key与value关联;
当key存在时,不会做任何操作。
示例:
当key不存在时:
127.0.0.1:6379> setnx key2 abc
(integer) 1
127.0.0.1:6379> get key2
"abc"
当key存在时:
127.0.0.1:6379> setnx key2 123
(integer) 0
127.0.0.1:6379> get key2
"abc"
setrange
语法:setrange key index value
作用:
当key不存在时,会将key按空白字符串进行处理,从index索引位置开始替换,前面的添加空白字符,后面的按照value值添加;
当key存在时,会在key的index索引位置开始,用value进行替换,如果value的长度不到key对应值的结尾,则只会替代对应位置的字符,如果value的长度超过key对应值的结尾,依旧会按相应位置进行替换。
示例:
当key不存在时:
127.0.0.1:6379> setrange key3 5 asdfads
(integer) 12
127.0.0.1:6379> get key3
"\x00\x00\x00\x00\x00asdfads"
当key存在且足够长时:
127.0.0.1:6379> set key1 "hello word"
OK
127.0.0.1:6379> get key1
"hello word"
127.0.0.1:6379> setrange key1 6 aa
(integer) 10
127.0.0.1:6379> get key1
"hello aard"
当key存在不够长时:
127.0.0.1:6379> set key3 aaa
OK
127.0.0.1:6379> setrange key3 3 bbb
(integer) 6
127.0.0.1:6379> get key3
"aaabbb"
strlen
语法:strlen key
作用:
返回key对应字符串的长度,当key不存在时,返回0,当key对应的值不是字符串时,会报错。
示例:
当key不存在时:
127.0.0.1:6379> strlen key4
(integer) 0
当key存在且是字符串时:
127.0.0.1:6379> get key3
"aaabbb"
127.0.0.1:6379> strlen key3
(integer) 6
当key存在但不是字符串时:
127.0.0.1:6379> lpush key4 100 200 300
(integer) 3
127.0.0.1:6379> strlen key4
(error) WRONGTYPE Operation against a key holding the wrong kind of value