Redis(三)——Redis数据类型
前言
本篇笔记中会先补充一些基础命令,然后再说明Redis的数据类型。
本篇笔记可以当做常用命令手册来使用,想要更加深入的同学不建议学习本篇笔记
基础命令补充
- mset
此命令可以获取新增/修改多个[key/value]。
mset [key1] [value1] [key2] [value2]
- mget
此命令可以一次获得多个 value
mget [key1] [key2]
- getset
此命令可以直接更改根据 [key] 获取到的 [value].
# 返回值为修改前的值
getset [key] [newValue]
- strlen
此命令可以获取对应 [key] 的 [value]的长度
strlen [key]
- append
对当前[key]对应的[value]追加内容
# 返回值为 value + appendValue
append [key] [appendValue]
- getrange
此命令可以截取一部分value;start和end都是下标,但是它的截取方式是将start和end所代表的元素都截取出来
getrange [key] start end
- setex
此命令可以直接在设置新的[value]的时候,规定其声明周期。
setex [key] [value] [seconds]
- psetex
此命令可以使用毫秒设置声明周期
psetex [key] [value] [milliseconds]
- setnx
此命令可以辨别当前 [key] 是否存在,如果存在则不作任何操作。
setnx [key] [value]
- msetnx
与setnx类似,可以同时设置多个[key/value],需要注意的是:如果在设置多个[key/value]时,只要有一个[key]是已经存在的,则所有本次的设置全都失效。
msetnx [key1] [value1] [key2] [value2]
- decrby
此命令对数值类型的数据进行减法
表示对年龄执行 -1 操作
decrby age 1
- incrby
表示对数值类型进行加法操作
incrby age 1
- incrbyfloat
对数值进行小数加法
# 注意:结果最终保留 17 位小数
incrbyfloat age 2.64563454645675686787896756736
数据类型
String类型
在Redis的前两篇笔记中,使用命令设置的数据的值都是对应的String类型,该类型可以直接理解为字符串(毕竟真的没什么区别)。
在这两篇笔记中记录的指令,有很多是字符串的常规操作命令。比如:字符串截取、拼接等。这些命令不需要背,用的多了就记住了。但是命令中需要注意的细节在笔记中都有记录,这些一定要进行记忆。
List数据类型
该类型是一个在各个语言中都很常见的类型,它的一些定义与规则也与Java语言有相似之处。比如:有序、元素可以重复,每个元素通过下标来记录对应的位置。但是在Redis的List中有一个特性是:可以从List两端插入数据。
基础命令
- lpush:创建List,并从头部插入数据,
lpush [key] [value1] [value2] [value3]
- rpush:创建List,并从尾部插入数据
rpush [key] [value1] [value2] [value3]
- lpushx:从头部插入数据,但是必须保证将要插入的List存在,否则不会执行创建List的操作
lpushx [key] [value1] [value2] [value3]
-
rpushx:同上。
-
lpop:将第一个数据返回显示并将其删除
lpop [key]
- rpop:同上(从尾部执行)
当List中的元素都被删除后,集合也会被删除。
- llen:获取List中的元素数量
llen listArray
- lset:修改指定List中对应下标的值
lset [key] [index] [newValue]
- lindex:获取指定下标的元素
lindex [key] [index]
- lrem:产出重复元素
lrem [key] [删除的数量] [去重的值]
- ltrim:保留指定区间的值
ltrim [key] [index_start] [index_end]
- linsert:向指定位置插入值
linsert [key] [before/after] [list中的key] [想要存放的key]
Set数据类型
set类型的数据其实可以理解为数据结构的set类型,主要特点:元素不能重复、无序、无下标。
基础命令
- sadd:创建set数据集合
sadd [key] [memeber1] [member2] [member3]
- smembers:查看set中的所有数据
smembers [key]
- scard:返回set中的元素个数
scard [key]
- spop:随机返回并删除一个元素
spop [key]
- smove:将一个set集合中的元素放入另一个set
smove [源set] [目标set] [member]
- srem:删除set中的指定元素
srem [key] [member]
- sismembers:判断set中是否包含某个元素,返回值为布尔值
sismember [key] [member]
- srandmember:随机返回指定数量的元素
srandmember [key] [count]
- sdiff:将第一个set中与其他set的元素重复的元素删掉(注意:删除第一个set集合中的元素)
sdiff [key1] [key2] [key3]
- sinter:交集
sinter [key1] [key2]
- sunion:并集
sunion [key1] [key2]
zset
基础命令
- zadd:创建zset集合
zadd [key] [score1] [member1] [score2] [member2] [score3] [member3]
- zrange:获取指定区间的元素
zrange [key] [index_start] [index_end]
- zcard:获取元素个数
zcard [key]
- zrangebyscore:根据权重指定的区间返回元素
# 普通显示
zrangebyscore [key] [score_start] [score_end]
# 分页显示
zrangebyscore [key] [score_start] [score_end] limit [offset] [count]
- zrank:返回排名
zrank [key] [member]
- zrevrand:倒序排名
zrevrand [key] [member]
- zscore:显示某一个元素的权重
zscore [key] [score]
- zrem:删除某一个元素
zrem [key] [member]
- zincrby:给某个特定元素加分
zincrby [key] [score] [member]
hash数据类型
hash数据类型与数据结构中的Map结构一致,除了固有的集合标识以外,内部还存在着【键值对】,其对应的属性为[field] [value]。
基础命令
- hset:创建hash集合
hset [key] [field1] [value1] [field2] [value2] [field3] [value3]
- hget:根据 field 获取对应的value
hget [key] [field]
- hgetall:获取当前hash集合的全部元素
hgetall [key]
- hdel:删除指定的【键值对】
hdel [key] [field]
- hexists:判断当前hash中是否存在某个 field
hexists [key] [field]
- hkeys:获取当前hash中的所有field
hkeys [key]
- hvals:获取当前hash中的所有value
hvals [key]
- hsetnx:设置一个【键值对】——前提是该 field 不存在
hsetnx [key] [field] [value]
- hincrby:对指定的value 执行加法计算
hincrby [key] [field] [increment]
- incrbyfloat:对指定的value执行浮点数加法操作
hincrbyfloat [key] [field] [increment]
总结
以上是Redis的物种数据类型——【String,List,Set,ZSet,Hash】的特性以及基础命令,不需要死记硬背,但是要多用。其余还是有一些相关的命令没有说明,只是使用的相对较少,用到的时候再去查就可以。