Redis
所有的 key
都是字符串,value
的类型是存在差异的Redis 中的字符串,直接就是按照二进制数据的方式存储的
不仅仅可以存储文本数据,还可以存储整数、普通的文本字符串、JSON、XML、二进制数据(图片、视频、音频…)
Redis
对于 string
来说,限制了大小最大为 512M
Redis
是单线程模型,希望进行的操作都是比较快速的,如果存的数据都很大,读取时间就要很长,就可能会导致 Redis
被阻塞Redis
不会做任何的编码转换,存的是什么,取出来就还是什么。
MySQL
的默认字符集如果是拉丁文,那么当你插入中文的时候,就会失败。当你插入一个数据的时候,MySQL
就会把你插入的数据拿到字符集里面去找,看看是不是合法的数据,有问题就插入不了Redis
就没有 MySQL
这么详细的验证步骤,你存的是什么,取出来的就还是什么。你按 utf-8
存,取出来还是 utf-8
,按照 gbk
存,取出来就还是 gbk
所以 Redis
一般就不会遇到乱码问题(存取用的编码方式不一致)将 string
类型的 value
设置到 key
中。如果 key
之前存在,则覆盖,⽆论原来的数据类型是什么。之前关于此 key
的 TTL
也全部失效。
语法:
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
set key value ex 10
相当于 set key value
expire key 10
NX
key
不存在,才设置key
存在,则不设置(返回 nil
)XX
key
存在,才设置(相当于更新 key
的 value
)key
不存在,则不设置(返回 nil
)
Redis
文档给出的语法格式说明:
[]
相当于一个独立的单元,表示可选项(可有可无),其中 |
表示“或者”的意思,多个只能出现一个[]
和 []
之间,是可以同时存在的快速失去年终奖的小技巧:清除
Redis
上所有的数据==>删库
FLUSHALL
,可以把 Redis
上所有的键值对都带走语法:
GET key
GET
来说,只支持字符串类型的 value
,如果 value
是其他类型,使用 GET
就会出错一次操作多组键值对,一次网络传输就能完成多组键值对的操作
MSET
语法:
MSET key value [key value...]
MGET
语法:
MGET key [key...]
MSET
和 MGET
的时间复杂度都是:,
不是整个 redis
服务器中所有 key
的数量,而是当前命令中给出的 key
的数量
SETNX
:不存在才能设置,存在则设置失败SETEX
:设置 key
的过期时间(单位 s
) PSETEX
:设置 key
的过期时间(单位 ms
)针对 set
的一些常见写法,进行了缩写。之所以这样搞,就是为了让操作更符合人的直觉(使用者的门槛就越低,要背的东西就越少)