阅读 103

【Redis】2. Redis基本数据类型及操作命令

库指令

1. 切换库

select 库编号
复制代码

2. 清空当前库

flushDB
复制代码

3. 清空所有库

flushAll
复制代码

操作Key指令

Redis是一个Key-Value内存型数据库,Value的类型很多(String,List,Set,ZSet,Hash),在学习Value之前,我们需要知道一些Key相关的API。

1. 删除Key

可以删除一个或多个Key

del key [key...]
复制代码

2. Key是否存在

Key如果存在返回1,不存在返回0

exists key 
复制代码

可以同时判断多个Key,只要有一个Key存在,就返回1

exists key [key...]
复制代码

3. Key设置到期时间

默认设置的Key都是永久存储,如果设置到期时间,在指定时间后Key就会自动删除。

设置的到期时间单位为:s

expire key seconds
复制代码

4. Key设置到期时间(毫秒)

设置的到期时间单位为:ms

pexpire key millseconds
复制代码

5. 查找Key

keys指令配合通配符来实现过滤。

查找所有Key(*可以匹配0个或多个字符)

keys *
复制代码

查找 "hex","hax","hxx" 等(?只能严格匹配1个字符)

keys h?x
复制代码

查找 "heax","haex","haax","heex" ([ae]中表示该位置的字符只能是a或者e)

keys h[ae][ae]x
复制代码

6. 移动Key

将当前库中的Key移动到指定库中。

move key index
复制代码

7. 查看Key到期时间

查看Key还有多长时间到期。

查看到期时间单位为:s

查看永久存储的Key返回-1,查看未存储的Key返回-2。

ttl key
复制代码

8. 查看Key到期时间

查看到期时间单位为:ms

pttl key
复制代码

9. 随机获取Key

从当前库中随机获取一个没有到期的Key。

randomkey
复制代码

10. Key改名

只改Key,对应的Value不变。

rename key newKey
复制代码

11. 查看Key类型

type key
复制代码

返回none表示Key不存在,正常返回String,List,Set,ZSet,Hash。

String类型

1. 内存模型

20210918113037.png

2. 常用命令

命令说明示例
set设置一对Key-Valueset key value
get通过Key获取对应Valueget key
mset设置多对(more)Key-Valuemset key1 value1 key2 value2 [key value ...]
mget通过多个Key获取多个对应的Valuemget key1 key2 [key ...]
getset获取Key的原始Value再赋新Valuegetset key value
strlen通过Key查看对应Value的长度strlen key
append通过Key给对应Value追加内容append key content
getrange通过Key和Value的下标,截取部分Value(下标从0开始,左闭右闭)getrange key startIndex endIndex
setex设置一对Key-Value,同时指定到期时间(单位:s)setex key seconds value
psetex设置一对Key-Value,同时指定到期时间(单位:ms)setex key millseconds value
setnx设置一对Key-Value,如果Key不存在(not)则设置成功,反之失败setnx key value
msetnx设置多对Key-Value,如果所有Key都不存在则设置成功,反之失败mset key value [key value ...]
decr通过Key对数字String的Value做减1decr key
decrby通过Key对数字String的Value做指定数减法decrby key decrement
incr通过Key对数字String的Value做加1incr key
incrby通过Key对数字String的Value做指定数加法incrby key increment
incrbyfloat通过Key对数字String的Value做指定浮点数加法(最多保留17位精度)incrbyfloat key increment

List类型命令

1. 特点

List中存储的Value有序,且可以出现重复。

List最左边是链表头,最右边是链表尾。

可以通过组合使用List提供的API,从逻辑上构建Stack和Queue。

2. 内存模型

20210918113025.png

3. 常用命令

命令说明示例
lpush将若干个Value顺序放入List(从左往右放),Key不存在则创建Listlpush key value [value ...]
lpushx将Value从左边放入List,Key必须存在lpushx key value
rpush将若干个Value顺序放入List(从右往左放),Key不存在则创建Listrpush key value [value ...]
rpushx将Value从右边放入List,Key必须存在rpushx key value
lpop获取List表头的Value,并移除表头Valuelpop key
rpop获取List表尾的Value,并移除表尾Valuerpop key
lrange通过List的下标,获取部分List中的Value(表头Value下标为0)lrange key startIndex stopIndex
llen查询List中Value的数量(从1开始计算)llen key
lset通过下标修改Value(下标必须存在)lset key index value
lindex通过下标获取Valuelindex key index
lrem删除指定数量的重复Value(从左往右删)lrem key count value
ltrim通过List的下标,只保留指定部分Value,其他全部删除ltrim key startIndex stopIndex
linsert在List中匹配到指定的Value之前或者之后插入一个新Value(从左往右匹配)linsert key BEFORE | AFTER target value

Set类型命令

1. 特点

Set中存储的Value无序,不可以出现重复。

2. 内存模型

20210918181709.png

3. 常用命令

命令说明示例
sadd将若干个Value放入Set中(重复的会覆盖),Key不存在则会创建Setsadd key value [value ...]
smembers查看Set中所有Valuesmembers key
scard返回Set中Value的数量scard key
spop随机返回Set中若干个Value并移除spop key count
smove将Value从一个Set中转移到另一个Setsmove source destination value
sismember判断Set中是否有该Valuesismember key value
srandmember随机返回Set中若干个Valuesrandmember key [member]
sdiff查看第一个集合与其他集合做差集后的所有Valuesdiff key [key ...]
sinter查看第一个集合与其他集合做交集后的所有Valuesinter key [key ...]
sunion查看第一个集合与其他集合做并集后的所有Value(结果会去重)sunion key [key ...]
srem删除Set中若干个Valuesrem key value [value ...]

ZSet类型命令

1. 特点

ZSet中存储的Value无序,不可以出现重复,但是可以根据某条件来对Value进行排序(可以看作可排序Set)。

ZSet排序的原理是:在Value存入ZSet时,ZSet会给该Value设置一个分数,排序时就会依照分数的大小来给Value进行排序,按照排序顺序给每一个Value分配一个下标。

2. 内存模型

20210918203657.png

3. 常用命令

命令说明示例
zadd将若干个Value和对应的分数放入ZSet中(重复的会覆盖),Key不存在则会创建ZSetzadd key score value [score value ...]
zcard查看ZSet中Value的数量zcard key
zrange通过ZSet的下标,升序获取部分ZSet中的Value(分数最低的Value下标为0),可以显示分数zrange key startIndex stopIndex [withscores]
zrevrange通过ZSet的下标,降序获取部分ZSet中的Value(分数最低的Value下标为0),可以显示分数zrevrange key startIndex stopIndex [withscores]
zrangebyscore通过ZSet的分数,升序获取部分ZSet中的Value,可以显示分数,可以分页zrangebyscore key min max [withscores] [limit offset count]
zrank查看ZSet中某一个Value的升序排名(从0开始)zrank key value
zrevrank查看ZSet中某一个Value的降序排名(从0开始)zrevrank key value
zscore查看ZSet中某一个Value的分数zscore key value
zrem删除ZSet中若干个Valuezrem key value [value ...]
zincrby给ZSet中某一个数值类型Value做指定数加法zincrby key increment value

Hash类型命令

1. 特点

Hash类似于Java中Map结构,Map中的Field不能重复。

2. 内存模型

20210918210811.png

3. 常用命令

命令说明示例
hset在Hash中添加一对Field-Value,Key不存在则会创建Hash(Field存在则会覆盖)hset key field value
hget获取Hash中的某一个Valuehget key field
hgetall查看Hash中所有Field-Valuehgetall key
hdel删除Hash中若干对Field-Valuehdel key field [field ...]
hexists判断Hash中是否存在该Fieldhexists key field
hkeys查看Hash中所有Fieldhkeys key
hvals查看Hash中所有Valuehvals key
hmset在Hash中添加若干对Field-Value(Field存在则会覆盖)hmset key filed value [field value ...]
hmget通过Field查看若干个Valuehmget key filed [field ...]
hsetnx在Hash中添加一对Field-Value,Key不存在则会创建Hash(Field存在则会添加失败)hsetnx key field value
hincrby给Hash中数值类型Value做指定数加法hincrby key field increment
hincrbyfloat给Hash中数值类型Value做指定浮点数加法(最多保留17位精度)hincrbyfloat key field increment
文章分类
后端
文章标签