String类型
String是Redis中的字符串,是Redis中最基本的数据类型,直接是按照二进制数据的进行存储
Redis中的所有key都是String类型,但是value是有差别的
常见的命令
set
将String类型的value存储到key中,如果之间有相同的key,则会将之间的值直接的进行覆盖
SET命令⽀持多种选项来影响它的⾏为
EX:设置key的过期时间,单位是秒
注:expire和EX的区别是:expire是给已经存在的key设置过期时间,而EX是给key赋值的同时,给key设置过期时间
PX:设置key的过期时间,单位是毫秒
NX:如果可以不存在才能进行设置,否则将会什么都不返回
XX:更新key的值
Mset
一次性设置多个key的值
setNX
只允许设置key不存在时的value,设置成功返回1,否则会返回0
setEX
设置过期时间,单位是秒
get
获取key对应的value,如果key不存在,将会返回nil(get只能获得String类型的value)
Mget
一次型获取多个key的值
相较于多次的发送get和set命令,mget和mset可以有效的减少网络时间,使性能更高,不需要多次发送命令
计数命令
incr
将key中对应的String类型的value的值+1
incrby
将key对应的String表示的数字加上对应的值
decr
将key中对应的String类型的value的值-1
decrby
将key对应的String表示的数字减去对应的值
incrbyfloat
将key对应的value +/- 去对应的数字
上述的时间复杂度都是O(1)
append
将新的value加到原来的value的后面
append的返回值,长度单位是字节,redis的字符串,不会对字符编码做任何的处理(reids不认识字符,只认字节)--->一个汉字是3个字节,所以只看字节不看字符
getrange
返回key对应的value其中的内容,由start和end确定(左闭右闭),可以使用负数表示倒数,-1表示返回的第一个字符,-2表示返回的倒数第二个字符
setrange
覆盖字串的一部分,从指定的偏移量开始
strlen
获得String字串的长度,单位是字节
内部编码
String中的内部编码一共有三种
int:8字节的整数
embstr:压缩字符串
raw:普通字符串
String类型的应用场景
缓存(redis作为缓存来使用)
在redis中,通常用来存储热点数据,通常把最近使用过的数据定义为热点数据 ,但是随着时间的推移,使用过的数据越来越多,redis中的数据也越来越多,所以我们在redis中写数据的时候,会给数据设置过期时间
计数功能
许多应用都会使用redis作为计数的基础工具,它可以实现快速计数,查询缓存的功能
共享会话
一个分布式的服务将用户的信息保存到各自的服务器中,由于负载均衡的原因,会将用户的请求分布到不同的服务器上,导致用户每次一刷新,都需要重新的登录,所以我们使用redis,将session统一的存储的redis中,⽆论⽤⼾被均衡到哪台Web服务器上,都集中从 Redis 中查询、更新Session信息
手机验证码
很多应⽤出于安全考虑,会在每次进⾏登录时,让用户输⼊⼿机号并且配合给⼿机发送验证码, 然后让用户再次输⼊收到的验证码并进⾏验证,从⽽确定是否是用户本⼈。为了短信接⼝不会频繁访问,会限制用户每分钟获取验证码的频率
可以使用一下伪代码来实现一下redis在手机验证码限制验证时间使用
如果没有超过5次,那么就继续生成验证码发送给用户进行验证。
希望对大家有所帮助!!!!