Redis数据库的安装和使用(二)-字符串相关指令

Redis数据库部分命令

字符串相关指令

关键字用法指令作用
appendappend 键 值向键对应的值中追加内容
bitcountbitcount key [start] [end]计算(指定位置)的字符中为1的比特位的数量
bitopbitop 参数 destkey key1 key2 …将ky1与key2进行相对应的逻辑运算,并将结果赋给destkey
decrdecr key将key中存储的数字的值减1
decrbydecrby key num将key中存储的数字的值减少num
getget key获取key对应的value值
gitbitgitbit key offset获取key对应的value值指定位置的bit值
getrangegitrange key start end获取指定的索引位置的子字符串
getsetgetset key value获取key的上一个值并且赋新的value值(key存在并且有值)
incrincr key将key中的数字的值加1
incrbyincrby key num将key中的数字的值增加num(整数)
incrbyfloatincrbyfloat key num将key中的数字的值增加num(小数)
mgetmget key …同时查询多个key对对应的值
msetmset key value …同时给一个或多个键值对赋值
msetnxmsetnx key value …同时给一个或多个键值对赋值,但是只要有一个键值对已存在,则所有的赋值失效
psetexpsetex key num value创建键值对,并且设置生存时间为num毫秒
setset key value给key关联字符串value
setbitsetbit key offset value给key指定的位置赋予bit值(0或1)
setexsetex key time value将key与value关联,并且设置key的生存时间为time
setnxsetnx key value将value赋给key,若key存在则不做任何操作
setrangesetrange key index value对key从索引位置index开始使用value替换(仅替换value长度对应位置的字符)
strlenstrlen 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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值