String(字符串、数值类型、布尔类型,都可以用一个值表示)的操作
String是Redis中最常用的一种数据类型,也是Redis中最简单的一种数据类型。首先,表面上它是字符串,但其实他可以灵活的表示字符串、整数、浮点数、布尔类型。Redis会自动的识别这几种值。
一、添加、查询、追加、获取长度、是否存在操作
1.添加
插入的数据中如果有空格的数据则需要添加引号进行引用,因为在Redis中空格就是分隔符,相当于该参数已结束,逗号是可以不用引号的
#添加key为 ‘test’ value 为‘value1’的数据
set test value1
2.查询
获取test的值
get test
3.追加
追加到key为‘test’的数据后拼接值为‘value2’,如果key存在类似于java中字符串‘+’,不存在则新增一个,类似于Redis中的set test2 value2 ,并且返回该数据的总长度
append test value2
4.获取长度
获取test对应值的长度
strlen test
5.判断是否存在
获取test对应值的长度
exists test
127.0.0.1:6379> set test value1
OK
127.0.0.1:6379> set num 2
OK
127.0.0.1:6379> set boolean1 true
OK
127.0.0.1:6379>
127.0.0.1:6379> keys *
1) "test"
2) "boolean1"
3) "num"
127.0.0.1:6379> get num
"2"
127.0.0.1:6379> get boolean1
"true"
127.0.0.1:6379> append test _value2
(integer) 13
127.0.0.1:6379> get test
"value1_value2"
127.0.0.1:6379> strlen test
(integer) 13
127.0.0.1:6379>
127.0.0.1:6379> exists testeee
(integer) 0
127.0.0.1:6379>
二、String类型的自增、自减操作(操作数值类型)
1.初始化一个值为0的数据
set num 0
2.为指定num的数据自增1
返回结果为自增后的值,相对于java中的i++(如果 key 不存在,则直接初始值为1)
incr num
3.指定key为‘num’的数据自减1
返回结果为自减后的值 ,相当于java中 i--(如果 key 不存在,则直接初始值为-1)
decr num
4.自增自减命令后跟加by
为指定的“key”的数据自增10(某参数值),并返回结果
incrby num 10
decrby num 3
127.0.0.1:6379> set num 0
OK
127.0.0.1:6379> get num
"0"
127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> get num
"2"
127.0.0.1:6379> decr num
(integer) 1
127.0.0.1:6379> decr num
(integer) 0
127.0.0.1:6379> decr num
(integer) -1
127.0.0.1:6379> decr num
(integer) -2
127.0.0.1:6379> incrby num 10
(integer) 8
127.0.0.1:6379> decrby num 3
(integer) 5
127.0.0.1:6379>
三、截取字符串操作
1.截取
相当于java中的subString,下标从0开始,不会改变原有数据,(取数下标超出范围后不会报错,从负数下标取结果为空,结尾下标为负数时结果为全部值)
getrange name 0 2
getrange name 0 -1 #0至-1相当于 get name,效果一致,获取整条数据
127.0.0.1:6379> set name abcdef
OK
127.0.0.1:6379> getrange name 0 6
"abcdef"
127.0.0.1:6379>
2.替换
#此语句跟java中replace有点类似,下标也是从0开始,但是有区别:java中是指定替换字符,Redis中是从指定位置开始替换,替换的数据根据你所需替换的长度一致,返回值是替换后的长度
setrange name 4 repalce
127.0.0.1:6379> set name abcdef
OK
127.0.0.1:6379> getrange name 0 6
"abcdef"
127.0.0.1:6379> setrange name 4 repalce
(integer) 11
127.0.0.1:6379> get name
"abcdrepalce"
127.0.0.1:6379>
4.对已存在的key-设置过期时间
为name设置10秒过期,单位为s
expire name 10
127.0.0.1:6379> expire testtest
(error) ERR wrong number of arguments for 'expire' command
127.0.0.1:6379> expire testtest 10
(integer) 0
127.0.0.1:6379> get testtest
(nil)
127.0.0.1:6379> expire test 10
(integer) 1
127.0.0.1:6379> ttl test
(integer) 5
127.0.0.1:6379> ttl test
(integer) 3
127.0.0.1:6379> ttl test
(integer) 2
127.0.0.1:6379> ttl test
(integer) 2
127.0.0.1:6379> ttl test
(integer) 1
127.0.0.1:6379> ttl test
(integer) -2
127.0.0.1:6379>
5.对不存在的key=设置过期时间
设置过期时间,跟Expire的区别是前者设置已存在的key的过期时间,而setex是在创建的时候设置
新建一个key为‘name’,值为‘abc’,过期时间为15秒的字符串数据
setex name 15 abc
set一个已经存在的key,会覆盖
如果key为‘name2’不存在,新增数据,返回值1证明成功,返回0表示已存在,也就是说这个跟set的区别是:set会替换原有的值,而setnx不会
setnx name2 dingdada2
127.0.0.1:6379> setex name 15 abc
OK
127.0.0.1:6379> get name
"abc"
127.0.0.1:6379> ttl name
(integer) 9
127.0.0.1:6379> ttl name
(integer) 7
127.0.0.1:6379>