网站授权系统怎么用,福州网站建设工作室,图片上传分享平台,做兼职看什么网站好Redis官网指令文档#xff1a;Commands | Docs
前言
此处的String类型是针对Redis的Value的#xff0c;因为Key的形式都是String#xff0c;而Value则有哈性、列表、集合等形式。
众所周知#xff0c;由于不同编码#xff0c;经常会出现乱码的问题#xff0c;但在Redi…Redis官网指令文档Commands | Docs
前言
此处的String类型是针对Redis的Value的因为Key的形式都是String而Value则有哈性、列表、集合等形式。
众所周知由于不同编码经常会出现乱码的问题但在Redis中却很少出现这是因为Redis中的字符串直接就是按照二进制的方式进行存储的即存进去的是啥取出来的就是啥(一些关系型数据库则会使用字符集的形式进行存储会对原始字符串进行修改)。
正因为其二进制的存储方式Redis除了存储文本数据还可以存储图片、视频、音频这类二进制文件但Redis对String类型进行了约束限制了最大存储512M。
常用指令
0x00 set get
set和get是非常常用的命令对于get来说很简单而对于set的话还有一些参数可以进行配置。
get
#get基本语法get key功能获取key的value
时间复杂度O(1)
返回值返回key所对应的value如果key不存在则返回nil。 set
#基本语法set key value [NX | XX] [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds]#其中[]表示可选项功能设置一个键值对可以进行参数配置
NX表示当key不存在进行set
XX表示当key存在进行set
EX和PX表示设置的过期时间EX的单位为妙PX单位为毫秒
EXAT和PXAT表示设置的过期时间不过是时间戳的格式
时间复杂度O(1)
返回值设置成功返回ok失败返回错误信息 0x01 setnx
此处的命令本质就是上面set命令中增加参数而已没有什么区别。
setnx
#基本语法setnx key value
功能如果key不存在就进行set如果存在则不set
返回值 如果key不存在就进行set返回set成功的个数(1表示成功0表示失败)。
时间复杂度O(1) 0x02 setex psetex
这两个命令也是对set命令的增强本质上等价于set中添加参数。
setex
#基本语法setex key seconds value等价于set key value ex seconds
功能创建一个键值对并设置scconds秒的过期时间
返回值成功设置的个数
时间复杂度O(1) psetex
#基本语法psetex key millionseconds value等价于set key value px millionseconds
功能创建一个键值对并设置millionscconds秒的过期时间
返回值成功设置的个数
时间复杂度O(1) 0x03 mset mget
这两个命令可以一下次设置多个key获取多个value为的是节省网络开销~
mget
#基本语法mget key1 [key2 key3 .....]redis SET key1 Hello
OK
redis SET key2 World
OK
redis MGET key1 key2 nonexisting
1) Hello
2) World
3) (nil)功能返回多个value如果不存在就返回nil
返回值返回key对应的value
时间复杂度O(N)此处的N指的是mget指令中key的个数。 mget
#基本语法mset key1 value1 [key2 value2 .....]redis MSET key1 Hello key2 World
OK
redis GET key1
Hello
redis GET key2
World
功能设置多个键值对
返回值OK
时间复杂度O(N)此处的N指的是mset指令中key-value的个数。 0x04 incr incrby
incr类似操作incrby是一个数
incr
#基本语法incr keyredis SET mykey 10
OK
redis INCR mykey
(integer) 11
redis GET mykey
11#如果key不存在会创建将value置为0
#数据范围为java中long的范围
功能对value进行自增操作不支持小数
返回值如果value为整数返回自增后的值否则显示类型错误
时间复杂度O(1) incrby
#基本语法incrby key numredis SET mykey 10
OK
redis INCRBY mykey 5
(integer) 15
功能对value进行具体值的自增支持负数不支持小数。
返回值如果value为整数返回自增后的值否则显示类型错误
时间复杂度O(1) 0x05 decr decrby
与incr相反进行减的操作。
#基本语法decr keyredis SET mykey 10
OK
redis DECR mykey
(integer) 9
redis SET mykey 234293482390480948029348230948
OK
redis DECR mykey
(error) value is not an integer or out of rangedecrby key numredis SET mykey 10
OK
redis DECRBY mykey 3
(integer) 7#如果key不存在会创建key并将value置为0
功能与incr和incrby相对。
返回值如果value为整数返回自减后的值否则显示类型错误
时间复杂度O(1) 0x06 incrbyfloat
#基本语法incrbyfloat key num功能把key加上numnum可以为小数如果要进行减操作使用负数Redis没有提供decrbyfloat
返回值进行操作后的值
时间复杂度O(1) 0x07 setrange getrange
这两个命令都是对value的某个范围进行操作这里的区间都是闭区间下标可以为负数
getrange
#基本语法getrange key start endredis SET mykey This is a string
OK
redis GETRANGE mykey 0 3
This
redis GETRANGE mykey -3 -1
ing
redis GETRANGE mykey 0 -1
This is a string
redis GETRANGE mykey 10 100
string
功能获取key对应value的[start, end] 的字符串。下标支持负数-1表示字符串最后一个位置-2表示倒数第二个位置下标越界了不会报错。
返回值返回[star, end] 之间的字符串
时间复杂度O(end - start) 注意 如果字符是中文汉字的话会有一些问题。因为在utf8中中文汉字占3个字节而getrange是按字节来切的后面取出来的时候会出现问题。 setrange
#基本语法setrange key offset valueredis SET key1 Hello World
OK
redis SETRANGE key1 6 Redis
(integer) 11
redis GET key1
Hello Redis 功能在offset设置字符串value
返回值设置成功后的长度(字节)
时间复杂度O(1) 0x08 strlen
#基本语法strlen keyredis SET mykey Hello world
OK
redis STRLEN mykey
(integer) 11
redis STRLEN nonexisting
(integer) 0
功能返回key对应value的长度
返回值返回key对应value的长度不存在则返回0
时间复杂度O(1) 0x09 append
#基本语法append key valueredis EXISTS mykey
(integer) 0
redis APPEND mykey Hello
(integer) 5
redis APPEND mykey World
(integer) 11
redis GET mykey
Hello World
功能在key对应value的末尾追加字符串.如果key不存在则类似set的操作。
返回值追加后的字符串长度
时间复杂度O(1) 注意 append返回是字节的个数返回不是字符的个数 如果是utf8编码一个字符占三个字节 0x0a substr(已弃用)
官方文档表示已经认为弃用了~~ 0x0b lcs
Redis7.0版本中新出的。
求两个字符串的最长公共子序列
#基本语法lcs key1 key2 [len] MSET key1 ohmytext key2 mynewtext
OKLCS key1 key2
mytextLCS key1 key2 LEN
(integer) 6
功能求最长公共子序列
返回值根据参数配置返回
时间复杂度O(n*m) 内部编码
在String类型中有3中编码类型。
1int8个字节的整形。适用于存储整数的场景便于计算。
2embstr压缩字符串。适用于比较短的字符串。
3raw普通字符串。适用于长的字符串底层持有的是字节数组
127.0.0.1:6379 set key3 10
OK
127.0.0.1:6379 object encoding key3
int
127.0.0.1:6379 set key4 hello
OK
127.0.0.1:6379 object encoding key4
embstr
127.0.0.1:6379 set key5 sssssssssssssssssssssssssssssssssssssssssssssssssssssssddddddddddddddddddddddddddddd
OK
127.0.0.1:6379 object encoding key5
raw最后
最后将讲解哈希类型~