Redis的String类型不会做任何的编码转换,也就是存什么就是什么。同时Redis的String类型限制了大小为512MB。
方法
1.set
语法:set key value [expiration EX seconds|PX milisecond[NX|XX]
语法解释:EX:表示存活时间,单位是秒,PX也是表示存活时间,单位是毫秒。
NX:表示如果key不存在才设置,若存在,就不设置。
XX:Key存在时才设置,相当于更新value,不存在,返回nil。
注意:若key已经存在,重新设置后,原有的value的TTL会失活。
2.get
语法:get key
就是通过key来获取value,但是get只能获得类型为String类型的value,其他类型的会出错。
3.Mset和Mget
就是一次对多个键值对进行操作,一次网络传输就可以完成多组键值对操作,相比于set和get来通过多轮网络传输的方式来比较,减少了网络传输。但是注意一次不能设置太多,不然会造成阻塞。
4.setNX,setEX,PsetEX
setNX:不存在才设置,存在则会失效。
setEX:设置的同时指定存活时间,单位是秒。
PsetEX:和上一个功能一样,只不过单位换成了毫秒。(要先写时间,再写value)。
针对int时
1.incr
value+1,返回值为value加1的值,若key不存在,默认就为0.
2.incrBy
value+n,也是key不存在时默认wei0.
3.decr
value-1,key不存在,默认为0.
4.decrBy
value-n,key不存在也是默认为0.
执行这些操作时,value必须为整数,而且范围在long(64位)之间。
5.incrbyfloat
value+/-小数。
针对字符串
1.append
拼接,若key已存在value而且为String类型时,会拼接到原value后面,若不存在,相当于set方法。返回拼接后的长度。
2.getrange
相当于substring,获取指定长度的字符串,但是区间为闭区间,而且支持像python一样使用负数下标。
3.setrange
对字符串的子串进行修改。
语法:setrange key offset(从第几个开始) value(替换的字符串)。返回值为替换后的总字符串长度。
4.strlen
获取字符串长度,单位是字节,value存放的必须是String类型,不然会报错。
String的内部编码
int == 8个字节。
embstr:<=39个字节(可以自己定义)
raw:>39个字节。
String的应用场景
1.做为缓存
用户要从Redis中获取数据,若Redis中没有,则从MySQL中获取,同时将元素加入到Redis中。
当内存空间不足时,可以采用过期策略和淘汰策略。
2.计数功能
像视频播放,点赞之类的,可以使用String类型,比如:vedio:123:2000.。。。
当统计播放前100名之类的情况,需要异步写入统计数据库。
3.共享会话
用于分布式系统上,让session会话单独拎出来到Redis中,每个服务器都访问Redis。
4.手机验证码
可以使用NX(没有才会设置)和EX(设置存活时间),将“手机号”和验证码存入Redis,然后判断就行了。