"学如逆水行舟,不进则退。"
目录
Redis的String字符串
redis中所有的key都是字符串的,但是value是存在各种差异的。Redis中的字符串直接就是按照二进制的方式进行存储的,不会做任何编码转换,存的是啥取得就是啥。对于value来说,不仅仅可以存储文本数据,还可以存储整数,普通文本,Json,xml,还有一些二进制文件,例如图片音频等,但是redis对string类型限制了大小,最高位512MB。
下面是字符串类型的value的不同形式:
区别于MySQL,MySQL有一个默认的字符集,为拉丁文的字符集,插入中文机会检测插入失败。但是redis是直接存储的二进制,因此redis遇到乱码的概率就小的多。
常见命令
set
将 string 类型的 value 设置到 key 中。如果 key 之前存在,则覆盖,无论原来的数据类型是什么。之前关于此 key 的 TTL 也全部失效。
除了最常见的set key value之外,我们还可以在set的时候设置存活时间,类似于expire的操作。
语法:set key value [expiration EX seconds | PX milliseconds] [NX|XX]
相当于set key value和expire key 10这两步的操作。EX设置的相当于秒级,PX设置的表示毫秒级。NX表示如果key不存在才设置,XX表示key存在,则不设置,并且返回nil(相当于更新操作)
[ ]表示一个独立的单元,相当于一个可有可无的选项,[ ]中的|表示或者的意思,即使是多个|也只能选择其中的一个。[ ]和[ ]之间是可以同时存在的。
还有一个小技巧就是在redis-cli输入flushAll,这个操作就相当于mysql里面的drop database。
演示 :
-2表示当前key已经被删除了
设置NX参数:
nil表明key1已经存在无法设置
设置XX参数:
OK表示覆盖key1成功
get
get key来获取对应key的value,但是只能获取对应value为字符串类型的key。
例如 :
创建一个列表类型的value,然后尝试使用get去获取,发现报错。
mget
一次性get多个key 的value。对比与get操作,mget可以减少网络传输的次数,可以节省网络资源。
时间复杂度为O (N),n是key的数量