redis常用五大数据类型基础使用。Redis有哪些数据类型? Redis基础数据类型如何使用? (っ•̀ω•́)っ✎⁾⁾ 数据库

Redis简单使用

常用入门方法 作用
dbsize 查看当前数据库的key数量
keys * 查看key的内容
flushdb 清空当前数据库的key的数量
flushall 清空所有库的key(慎用)
exists 键(key) 判断键是否存在

Redis五大基础数据类型简介

五大基础数据类型包含:字符串(strings), 列表(lists),散列(hashes), 集合(sets), 有序集合(sorted sets)

字符串(Redis Strings)

这是最简单Redis类型。一个键(Key)对应一个值(value)
在这里插入图片描述
且键不能重复出现,若重复出现,后设置的键会覆盖之前设置的键对应的值

常用方法 作用
set 键(key) 值(value) [到期时间EX(秒)|PX(毫秒)] [NX|XX] 默认为创建|更新键值对(set time 10 ex 10,含义为创建一个键为time,值为10并存在十秒的字符串。存在时间到达后会自动删除字符串。ex 1 == px 1000) {NX1 XX2}
get 键(key) 取出指定键中的值
mset 键(key) 值(value) [键(key) 值(value) ......] 创建多个键值对(m:many)
mget 键(Key) [键(Key) 键(Key)......] 查看多个键值对
append 键(Key) 值(value) 在指定键的值中添加新的值(若键不存在则会新建键),并返回添加新值后的值长度
del 键(Key) [键(Key) 键(Key)......] 删除指定的键,可以一次删除多个
strlen 键(Key) 返回指定键对应值的长度
incr 键(Key) 对键所对应的值加一(点赞操作常用),并返回增加后的值。指定键的值必须为整数,否则返回错误信息
decr 键(Key) 对键所对应的值减一,并返回减少后的值
incrby 键(Key) 增量(increment) 对指定的键设定增量
decrby 键(Key) 增量(increment) 对指定的键设置减少量
getrange 键(Key) 开始角标(start) 结束角标(end) 获取指定id值的区间范围内的值(0 -1表示全部)
setrange 偏移(offset) 替换值(value) 从指定偏移量处开始进行值的替换

在这里插入图片描述

列表(Redis Lists)

Redis中的列表和Python列表比较类似,是基于数据结构中的链表(Linked Lists)结构演化而来,这种结构的好处是在其两端添加元素非常容易,时间复杂度是一个常数。无论是几个元素的列表还是几万个元素的列表在其两端添加元素的时间复杂度都是相同的。如果你对链表不是很了解,可以查看数据结构-链表解析
总结:列表更加适合添加新元素较多的操作
在这里插入图片描述

常用方法 作用
lpush 键(key) 值(value) [值 ...] 像列表左侧添加值,可以理解为倒叙插入,添加在列表最前方(若列表不存在则创建列表)
rpush 键(key) 值(value) [值 ...] 像列表右侧添加值,可以理解为正叙插入,添加在列表最后方(若列表不存在则创建列表)
lrange 键(key) 开始角标(start) 结束角标(end) 读取列表中的数据(列表无法使用get方式读取,如果想要读取整个列表可以使用lrange key 0 -1)
lindex 键(key) 索引角标(index) 从指定角标获取值(获取单个值时使用)
lpop 键(key) 弹出列表左侧值(列表第一个值)
rpop 键(key) 弹出列表右侧值(列表最后一个值)
lrem 键(key) 删除个数(count) 删除值(value) 删除指定元素指定个数(如果指定个数为0,则删除全部指定值),比如:lrem key 2 3含义为删除key中的2个3元素;lrem key 0 1为删除key中所以1
llen 键(key) 获取列表长度
ltrim 键(key) 开始截取(start) 结束截取(end) 从列表中截取指定长度(比如ltrim key 1 3,为截取key中角标为1~3的值,并赋值给key)
rpoplpush 来源列表(source) 目标列表(destination) 将来源列表中的最后一个值压入目标列表中
lset 键(key) 目标角标(index) 值(value) 将指定角标的值替换
linsert 键(key) 前|后(BEFORE|AFTER) 目标值(pivot) 添加值(value) 在指定目标(前|后)添加值

散列(Redis Hashes)

Redis的散列使用了哈希表这种数据结构,类似于Python中的字典(dict)。
在这里插入图片描述

常用方法 作用
hset 键(key) 字段(field) 值(value) 设置值
hget 键(key) 字段(field) 取出值
hmset 键(key) 字段(field) 值(value) [字段 值 ...] 一次设置多组值
hmget 键(key) 字段(field) [字段 字段] 只返回相应的值
hgetall 键(key) 返回全部键值对
hdel 键(key) 字段(field) [字段 ...] 删除指定字段
hlen 键(key) 获取指定键的长度(其中有几对键值对)
hexists 键(key) 字段(field) 检查键中是否存在指定字段(存在返回1;不存在返回0)
hkeys 键(key) 获取指定键中的所以字段
hvals 键(key) 获取指定键中的所以值

集合(Redis Sets)

集合对象是一组无序排列的可哈希的值,我们输入的值(member)会被经过hash算法分类到不同的存储桶中,读取时候会自动读取所有有数据的存储桶。根据下图可以看出,正常的集合在存储数据的时候会打乱我们存储的顺序,所以是正常的集合是无序存储。集合还有一个特性:重复成员会自动合并,所以集合自带去重功能。
在这里插入图片描述

常用方法 作用
sadd 键(key) 成员(member) [成员…] 在指定键中添加集合成员(若键不存在则会自动创建)
smembers 键(key) 输出指定键中的所有元素
scard 键(key) 输出当前集合中存在的元素个数
srem 键(key) 成员(member) [成员 …] 删除集合中指定成员
spop 键(key) [个数(count)] 随机弹出成员(默认一个,可以指定数量)
smove 来源集合(source) 目标集合(destination) 指定成员(member) 将来源集合中的指定成员放入目标集合中
sdiff 键(key) [键 …] 输出指定键的差集,不会改变键中的成员
sinter 键(key) [键 …] 指定键的交集,不会改变键中的成员
sunion 键(key) [键 …] 指定键的并集,不会改变键中的成员

有序集合(Redis Sorted sets)

相较于集合,有序集合最大的变化就是让集合变得有序,类似于集合和哈希之间的混合。每个成员都进行记分,分数越小越靠前。
在这里插入图片描述

常用方法 作用
zadd 键(key) [NX|XX] [CH] [INCR] 分数(score) 成员(member) [分数 成员 ...] 在指定键中添加有序数组,其中分数越小越靠前(分数只能为浮点数与整数) { NX1 XX2 CH3 INCR4 }
zrange 键(key) 起始角标(start) 结束角标(stop) [WITHSCORES] 正向显示指定角标范围内的(分数从小到大),携带withscores会显示分数,默认不显示分数
zrevrange 键(key) 起始角标(start) 结束角标(stop) [WITHSCORES] 反向显示指定角标范围内的(分数从大到小),携带withscores会显示分数,默认不显示分数
zrangebyscore 键(key) 最小值(min) 最大值(max) [WITHSCORES] [limit 角标(offset) 数量(count)] 获取指定范围内的值(默认为开区间,在大于小于前加入(即为闭区间,当最大最小值未知时可以写-inf表示最小值与+inf表示最大值),如zrangebyscore setincr (2 +inf表示: 取分数出>2的所以成员 {LIMIT5 }
zrem 键(key) 成员(member) [成员 ...] 删除指定的成员
zcard 键(key) 获取当前有序集合的长度
zcount 键(key) 最小值(min) 最大值(max) 获取分数在指定范围内的成员的个数
zrank 键(key) 成员(member) 返回指定成员的角标(角标并非设定的分数,角标从0开始计算)
zincrby 键(key) 增量(increment ) 成员(member) 对指定成员的分数增量

  1. NX: 不更新存在的成员。只添加新成员。 ↩︎ ↩︎

  2. XX: 仅仅更新存在的成员,不添加新成员。 ↩︎ ↩︎

  3. CH(changed): 修改返回值为发生变化的成员总数(分数或者成员发送变化都算有发送变化),默认为返回新添加成员的总数(默认已有成员的分数发送改变并不算改变) ↩︎

  4. INCR: 如果当前成员已存在,这指定的分数会累加在成员当前的分数之上。(类似于zincrby操作) ↩︎

  5. ↩︎