Redis的Key操作、String、Set、List、ZSet和Hash操作的执行【Redis学习笔记二】

394 阅读6分钟

6、Redis数据库相关指令

6.1 数据库操作指令

# 1.Redis中库说明
- 使用redis的默认配置启动redis服务后,默认会存在16个库,编号从0~15
- 可以使用select 库的编号 来选择一个redis的库

# 2.Redis中操作库的指令
- 清空当前的库 FLUSHDB
- 清空全部的库 FLUSHALL

# 3.Redis客户端显示中文
- ./redis-cli  -p 7000 --raw

6.2 操作key相关指令

# 1.DEL指令
- 语法:DEL key [key ...]
- 作用:删除给定的一个或多个key。不存在的key会被忽略
- 可用版本: >= 1.0.0
- 返回值:被删除key的数量

# 2.EXISTS指令
- 语法:EXISTS key
- 作用:检查给定的key是否存在
- 可用版本:>=1.0.0
- 返回值:若key存在,返回1,否则返回0

# 3.EXPIRE
- 语法:EXPIRE key seconds
- 作用:为给定的key设置生存时间,当key过期时(生存时间为0),它会被自动删除
- 可用版本:>=1.0.0
- 时间复杂度:O(1)
- 返回值:设置成功返回1

# 4.keys
- 语法:keys pattern
- 作用:查找所有符合给定模式pattern的key
- 语法:
	KEYS * 匹配数据库中所有的key
	KEYS h?llo 匹配hello,hallo和hxllo等
	KEYs h*llo 匹配hllo和heeeello等。
	KEYS h[ae]llo 匹配hello和hallo,但不匹配hillo
- 可以版本:>=1.0.0
- 返回值:符合给定模式的key的列表

# 5.MOVE
- 语法:move key db
- 作用:将当前数据库的key移动到给定的数据库db当中
- 可用版本:>= 1.0.0
- 返回值:移动成功返回1,失败则返回0

# 6.PEXPIRE
- 语法:PEXPIRE key milliseconds
- 作用:这个命令和EXPIRE命令的作用类似,但是它以毫秒为单位设置key的生存时间,而不像EXPIRE命令那样以秒单位
- 可用版本:>=2.6.0
- 时间复杂度:O(1)
- 返回值:设置成功,返回1,key不存在或设置失败,返回0

# 7.PEXPIREAT
- 语法:PEXPIREAT KEY milliseconds-timestamp
- 作用:这个命令和EXPIREAT命令类似,但它以毫秒为单位设置key的过期unix时间戳,而不是像EXPIREAT那样,以秒为单位。
- 可用版本:>=2.6.0
- 返回值:如果生存时间设置成功,返回1。当key不存在或没有办法设置生存时间时,返回0.(查看EXPIRE命令获取更多信息)

# 8.TTL
- 语法:TTL key
- 作用:以秒为单位,返回给定key的剩余生存时间(TTL:time to live)。
- 可用版本:>=1.0.0
- 返回值:
	当key不存在时,返回-2
	当key存在但没有设置剩余时间时,返回-1
	否则,以秒为单位,返回key的剩余生存时间
- Note:在Redis2.8以前,当key不存在,或者key没有设置生存时间时,命令都返回-1

# 9.PTTL
- 语法:PTTL key
- 作用:这个命令类似于TTL命令,但它以毫秒为单位返回key的剩余生存时间,而不是像TTL命令那样,以秒为单位。
- 可用版本:>=2.6.0
- 返回值:当key不存在时,返回-2。当key存在但没有设置剩余生存时间时,返回-1。
- 否则,以毫秒为单位,返回key的剩余生存时间。
- 注意:在Redis2.8以前,当key不存在,或者key没有设置剩余生存时间时,命令都返回-1。

# 10.RANDOMKEY
- 语法:RANDOMKEY
- 作用:从当前数据库中随机返回(不删除)一个key。
- 可用版本:>=1.0.0
- 返回值:当数据库不为空时,返回一个key;当数据库为空时,返回nil。

# 11.RENAME
- 语法:RENAME key newkey
- 作用:将key改名为newkey。当key和newkey相同,或者key不存在时,返回一个错误。当newkey已经存在时,RENAME命令将覆盖旧值。
- 可用版本:>=1.0.0
- 返回值:改名成功时提示OK,失败时候返回一个错误。

# 12.TYPE
- 语法:TYPE key
- 作用:返回key所存储的值的类型
- 可用版本:>=1.0.0
- 返回值:
	none(key不存在)
	string(字符串)
	list(列表)
	zset(有序集)
	set(集合)
	hash(哈希表)

6.3 String类型

1.内存存数模型

微信截图_20211017194505.png

2.常用操作命令
命令说明
set设置一个key/value
get根据key获得对应的value
mset一次设置多个key/value
mget一次获得多个key的value
getset获得原始key的值,同时设置新值
strlen获得对应key存储value的长度
append为对应的key的value追加内容
getrange(索引从0开始)截取value的内容
setex设置一个key的有效期(秒)
psetex设置一个key存活的有效期(毫秒)
setnx存在不做任何操作,不存在添加
msetnx原子操作可以同时设置多个key,只要有一个存在,都不保存
decr进行数值类型的-1操作
decrby根据提供的数据进行减法操作
incr进行数值类型的+1操作
incrby根据提供的数据进行加法操作
incrbyfloat根据提供的数据加入浮点数

6.4 List类型

List:列表 相当于java中list 集合。

特点:元素有序 且 可以重复

1.内存存储模型

微信截图_20211017195230.png

2.常用操作指令
命令说明
lpush将某个值加入到一个key列表头部
lpushx同lpush,但是必须要保证这个key存在
rpush将某个值加入到一个key列表末尾
lpop返回和移除列表左边的第一个元素
rpop返回和移除列表右边的第一个元素
lrange获取某一个下标区间内的元素
llen获取列表元素个数
lindex获取某一个指定索引位置的元素
lrem删除重复元素
ltrim保存列表中特定区间内的元素
linsert在某一个元素之前|之后插入新元素

6.5 Set类型

特点:Set类型 Set集合 元素无序 不可以重复

1.内存存储模型

微信截图_20211017214612.png

2.常用命令
命令说明
sadd为集合添加元素
smembers显示集合中所有元素 无序
scard返回集合中元素的个数
spop随机返回一个元素 并将元素在集合中删除
smove从一个集合中向另一个集合移动元素 必须是同一种类型
srem从集合中删除一个元素
sismember判断一个集合中是否含有这个元素
srandmember随机返回元素
sdiff去掉第一个元素中其他集合含有的相同元素
sinter求交集
sunion求合集

6.6 ZSet类型

特点:可排序的set集合,排序,不可重复

ZSET 官方 可排序SET sortSet

1.内存模型

微信截图_20211017215054.png

2.常用命令
命令说明
zadd添加一个有序集合元素
zcard返回集合的元素个数
zrange 升序 zrevrange 降序返回一个范围内的元素
zrangebyscore按照分数查找一个范围内的元素
zrank返回排名
zrevrank倒序排名
zscore显示某一个元素的分数
zrem移除某一个元素
zincrby给某个特定元素加分

6.7 Hash类型

特点:value是一个map结构 存在 key value key无序的

1.内存模型

微信截图_20211017215447.png

2.常用命令
命令说明
hset设置一个key/value对
hget获得一个key对应的value
hgetall获得所有的key/value对
hdel删除某一个key/value对
hexists判断一个key是否存在
hkeys获得所有的key
hvals获得所有的value
hmset设置多个key/value
hmget获得多个key的value
hsetnx设置一个不存在的key的值
hincrby为value进行加法运算
hincrbyfloat为value加入浮点值