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

MSET
语法:
MSET key value [key value...]MGET
语法:
MGET key [key...]
MSET和MGET的时间复杂度都是:O ( N ) O(N)
O
(
N
) ,
N N
N 不是整个
redis服务器中所有key的数量,而是当前命令中给出的key的数量
SETNX、SETEX 和 PSETEX
SETNX:不存在才能设置,存在则设置失败
SETEX:设置key的过期时间(单位s)
PSETEX:设置key的过期时间(单位ms)
针对
set
的一些常见写法,进行了缩写。之所以这样搞,就是为了让操作更符合人的直觉(使用者的门槛就越低,要背的东西就越少)




