NoSQL之Redis对string数据类型的操作

时间:2021-11-02 15:56:13

一、简介

  String是最简单的数据类型,一个Key对应一个Value,String类型是二进制安装的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。

1.set key value:设置key对应的值为string类型的value,返回值ok

127.0.0.1:6379> set mykey 'this is a sting'
OK

这样就想当于设置了mykey='this is a string'的键值对。set是可以重新设置的,也就是说我如果再执行set mykey 'this is another string'那么后面的值会覆盖前面的值。

2.get key:获取key键对应的string value:

127.0.0.1:6379> get mykey
"this is a string"

这样就获取了刚才我们设置的mykey对应的value 值为'this is a string'

3.setnx key value:只对不存在的key设置对应的value值,如果key已经存在那么设置不成功返回integer 0,nx是not exist的意思。如果key不存在那么设置成功返回integer 1

127.0.0.1:6379> setnx mykey 'this is mykey value'
(integer) 0

说明设置不成功,这个时候我们再用get mykey

127.0.0.1:6379> get mykey
"this is a string"

可以看到还是之前的值,并没有变化。那么我们用setnx mykey1 ‘this is mykey1 value'看看是什么情况,mykey1是之前没有设置过的

127.0.0.1:6379> setnx mykey1 'this is mykey1 string value'
(integer) 1

127.0.0.1:6379> get mykey1
"this is mykey1 string value"

很明显mykey1设置成功了。

4.setex key value:设置key对应的值为string类型的value,并指定此键值对应的有效期。

127.0.0.1:6379> setex boyname 10 joker
OK

上面语句的意思是我设置了一个键值为boyname的value为joker,并且10后过期,那么我get boyname回获取到10秒,但是10秒之后就会返回(nil)这个代表redis里的空字符串。

set boyname joker如果没有设置有效期,代表永久有效。

5.setrange key value start childstring:设置指定key的value的子字符串。从start开始,设置长度为length

127.0.0.1:6379> set email test@163.com
OK
127.0.0.1:6379> get email
"test@163.com"
127.0.0.1:6379> setrange email 5 gmail.com
(integer) 14
127.0.0.1:6379> get email
"test@gmail.com"

上面的命令首先设置email为test@163.com然后把163.com替换为 gmail.com

6.mset key1 value1 key2 value2 key3 value3 .........:一次设置多个key值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置。

127.0.0.1:6379> mset key1 value1 key2 value2 key3 value3
OK

127.0.0.1:6379> get key1
"value1"

同样用mset再次设置kye1 key2 key3的值,会覆盖前面的值。

127.0.0.1:6379> mset key1 newvalue1 key2 newvalue2 key3 newvalue3
OK

127.0.0.1:6379> get key1
"newvalue1"

7.msetnx key1 value1 key2 value2 key3 value3 ......:一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的可以值

127.0.0.1:6379> msetnx key1 value1 key2 value2 key4 value4
(integer) 0

因为key1 key2之前被设置过,所以失败

127.0.0.1:6379> msetnx key4 value4 key5 value5
(integer) 1

key4 key5都没有设置过,所以成功

8.getset key value:设置一个新值,并且返回旧值。

127.0.0.1:6379> get key4
"value4"
127.0.0.1:6379> getset key4 newvalue4
"value4"
127.0.0.1:6379> get key4
"newvalue4"

上面的命令首先获取key4原来的值为value4,用getset设置key4新值为newvalue4,同时返回了旧值value4。用完getset命令之后再用get获取key4为新值newvalue4.

9.getrange key start end:获取key的子字符串,从start开始到end结束

127.0.0.1:6379> getrange key4 1 3
"ewv"

10.mget key1 key2 key3...:批量获取

127.0.0.1:6379> mget key1 key2 key3
1) "test1"
2) "test2"
3) "test3"

11.incr key : 自增

127.0.0.1:6379> set num 2
OK
127.0.0.1:6379> incr num
(integer) 3
127.0.0.1:6379> get num
"3"

12.decr key : 自减

127.0.0.1:6379> decr num
(integer) 2
127.0.0.1:6379> get num
"2"

13 .incrby key count:以指定的count数进行自增

127.0.0.1:6379> incrby num 10
(integer) 12
127.0.0.1:6379> get num
"12"

14.decrby key count:以指定的count数进行自减

127.0.0.1:6379> decrby num 2
(integer) 10
127.0.0.1:6379> get num
"10"

15.append key childstring:给指定key的value追加childstring

127.0.0.1:6379> get key1
"test1"
127.0.0.1:6379> append key1 test2
(integer) 10
127.0.0.1:6379> get key1
"test1test2"

key1原来的值为test1,用append方法追加之后变成了test1test2。append的结果返回是追加后的字符串长度。

15.strlen key:获取key对应value字符串的长度

127.0.0.1:6379> strlen key1
(integer) 10