redis字符串类型
- 最大不能超过512MB
- 包括字符串,数字,json,二进制
字符串相关操作
1.设置值
1)set
set key value [ex seconds] [px milliseconds] [nx|xx]
- ex seconds:设置秒级过期时间
- px milliseconds:设置毫秒级过期时间
- nx:键必须不存在才可以设置成功,用于添加
- xx:键必须存在才可以设置成功,用于更新
127.0.0.1:6379> set hello word
OK
127.0.0.1:6379> set key1 hello ex 10 xx
(nil)
127.0.0.1:6379> set key1 hello ex 10 nx
OK
2)setex
setex key seconds value
- 指定的key设置值及过期时间,已存在则会替换旧的值
- 原子性操作,关联值和设置生存时间两个动作会在同一时间内完成
127.0.0.1:6379> setex product 3600 friut
OK
3)setnx
setnx key value
- set if not exists,指定key不存在时,为key设置指定值
- 设置成返回1,失败返回0
127.0.0.1:6379> setnx tmp temp
(integer) 1
127.0.0.1:6379> setnx hello word
(integer) 0
4)mset
mset key value [key value …]
- 批量设置值
127.0.0.1:6379> mset a 1 b 2 c 3
OK
5)setrange
setrange key offeset value
- 设置指定位置的字符
- 下标从0开始
- 结果返回字符串的个数
127.0.0.1:6379> set user_name zhangsan
OK
127.0.0.1:6379> setrange user_name 0 c
(integer) 8
127.0.0.1:6379> get user_name
"changsan"
2.获取值
1)get
get key
- 不存在返回nil
- n次get时间=n次网络时间+n次命令时间
127.0.0.1:6379> get hello
"word"
127.0.0.1:6379> get key1
(nil)
2)mget
mget key [key …]
- 批量获取值,可提高开发效率
- n次get时间=1次网络时间+n次命令时间
- 批量get的次数不能过多(50以内),可能造成redis阻塞或网络拥塞等性能影响
- 返回给定key值的列表,不存在key返回nil
127.0.0.1:6379> mget a b c hello
1) "1"
2) "2"
3) "3"
4) "word"
3)getrange
getrange key start end
- 获取部分字符串
- start:开始偏移量
- end:结束偏移量
- 偏移量从0开始计算
127.0.0.1:6379> set user_name zhangsan
OK
127.0.0.1:6379> getrange user_name 5 8
"san"
4)getset
getset key value
- 设置并返回原值
- 不存在,则返回nil
- 存在,则返回原来的值的,并且将value值更新
127.0.0.1:6379> getset aa "hello word"
(nil)
127.0.0.1:6379> getset hello redis
"word"
127.0.0.1:6379> get hello
"redis"
3.计数
1)incr
incr key
- 数值增加1
- 值不是整数,返回错误
- 值是整数,返回自增后的结果
- 键不存在,按照值为0自增,返回结果为1
127.0.0.1:6379> set age 17
OK
127.0.0.1:6379> incr age
(integer) 18
2)incrby
incrby key incr_amount
- 数值加上指定增量值
127.0.0.1:6379> incrby age 10
(integer) 27
3)decr
decr key
- 数字值减少1
127.0.0.1:6379> decr age
(integer) 17
4)decrby
decrby key decr_amount
- 给指定数值减少指定数值
decrby age 5
(integer) 22
4.追加值
append key value
- 向字符串尾部追加值
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> append hello 2021
(integer) 9
127.0.0.1:6379> get hello
5.查询字符串长度
strlen key
- 中文占3个的字节
127.0.0.1:6379> strlen hello
(integer) 4
6.字符串类型命令时间复杂度
命令 | 时间复杂度 |
---|---|
set | O(1) |
get | O(1) |
del | O(k) |
mset | O(k) |
mget | O(k) |
incr | O(1) |
decr | O(1) |
incrby | O(1) |
decrby | O(1) |
incrbyfloat | O(1) |
append | O(1) |
strlen | O(1) |
setrange | O(1) |
getrange | O(n),n字符串长度,若字符串较短等同O(1) |
mget性能测试:https://blog.csdn.net/Jinlu_npu/article/details/79744689