String(字符串类型)
一、常用命令
- set、get
- decr、incr(自减、自增)
- decrby、incrby、incrbyfloat(可指定长度)
- strlen(获取长度)
- getset(重新设置值,并返回原value)
- set key value ex|px 1000(ex设置秒级过期时间 | px设置毫秒级过期时间,可使用setex替换)
- set key value nx|xx(nx,键不存在,设置成功;xx,键存在,更新成功,可使用setnx替换)
注意:value值为中文会占3个字节
基于setnx特性,只有一个客户端能设置成功,可以作为分布式锁的一种实现方案
二、批量命令
- mset k1 v1 k2 v2 k3 v3
- mget k1 k2 k3
批量设置和批量获取,提高了开发效率,减少了耗时:
n次get时间 = n次网络时间 + n次命令执行时间
使用mget命令后,n次get时间 = 1次网络时间 + n次命令执行时间
使用批量操作命令,有提高处理效率,但注意每次批量操作的命令不要过多,过多可能造成redis阻塞或网络拥塞。
三、不常用命令
- append key append_value(在原key的value后追加值)
- setrange key index element(设置指定位置的字符)
- getrange key start end(获取部分字符)
四、内部编码
对外string类型,内部多种编码实现
- object encoding key(查看编码命令 )
- int(8个字节的长整型,纯数字)
- embstr(小于等于39个字节的字符串)
- raw(大于39个字节的字符串)
五、典型使用场景
- 作为缓存层
- 计数(incr)
- 共享session(spring-session)
- 限速(短信验证码发送,限制每分钟获取频率,一天发送次数;限制ip每秒访问次数)
注:key值设置推荐方式“业务名:对象名:id:[属性]”
可以在描述键含义的前提下适当减少键的长度,从而减少内存消耗