Redis五大数据类型


前言

本篇主要讲Redis的五大数据类型
在这里插入图片描述


一、Redis 键相关的基本命令

查询当前库的所有键

keys * 

判断某个键是否存在

exists <key>

查看键的类型

type <key>

删除某个键

del <key>

在这里插入图片描述
为键值设置过期时间,单位秒。

expire <key> <seconds>

查看还有多少秒过期,-1表示永不过期,-2表示已过期

ttl <key>

在这里插入图片描述
查看当前数据库的key的数量

dbsize

清空当前库

Flushdb

通杀全部库(别用啊!通杀十六个库)

Flushall

在这里插入图片描述

二、Redis 字符串(String)

➢ String是Redis最基本的类型,你可以理解成与Memcached-模一样的类型,一个key对应一 个value
➢ String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
➢ String类型是Redis最基本的数据类型,-个Redis中字符串value最多可以是512M

  • 查询对应键值
get <key>
  • 添加键值对
set <key> <value>
  • 将给定的 追加到原值的末尾
append <key> <value> 
  • 获得值的长度
strlen <key>
  • 只有在key不存在时设置key的值
setnx <key> <value>

在这里插入图片描述

  • 将key中储存的数字值增1
  • 只能对数字值操作,如果为空,新增值为1
incr <key>

在这里插入图片描述
在这里插入图片描述

  • 将key中储存的数字值减1
  • 只能对数字值操作,如果为空,新增值为-1
. decr <key>
  • 将key中储存的数字值增减。自定义步长。
incrby / decrby <key> <步长>`

在这里插入图片描述

  • 同时设置一个或多个key-value对
mset <key1> <value1> <key2> <value2>

在这里插入图片描述

  • 同时获取一个或多个value
mget <key1> <key2> <key3> ...

在这里插入图片描述

  • 同时设置一个或多个key-value对,当且仅当所有给定 key都不存在。

注意:当所有 key 都成功设置,返回 1 。 如果所有给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。

msetnx <key1> <value1> <key2> <value2>

在这里插入图片描述

  • 获得值的范围,类似java中的substring
getrange <key> <起始位置> <结束位置>

在这里插入图片描述

  • 用value覆写key 所储存的字符串值,从<起始位置>开始。
setrange <key>. <起始位置> <value>

在这里插入图片描述
●设置键值的同时,设置过期时间,单位秒。Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

setex <key> <过期时间> <value>

在这里插入图片描述

●以新换旧,设置了新值同时获得旧值。

getset <key> <value>

在这里插入图片描述

三、Redis 列表(List)

➢单键多值
➢Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一“个元素导列表的头部(左边)或者尾部(右边)。
➢它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

  • 从左边/右边插入一个或多个值。
lpush/rpush <key> <value1> <value2>

在这里插入图片描述
在这里插入图片描述

  • 从左边/右边吐出一个值
  • 值在键在,值光键亡。
    Redis Rpop 命令用于移除并返回列表的最后一个元素。
lpop/rpop <key>

在这里插入图片描述
在这里插入图片描述

  • rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
    从key1列表右边吐出一个值,插到 key2
rpoplpush <key1> <key2>
  • 按照索引下标获得元素(从左到右)
lrange <key> <start> < stop>

在这里插入图片描述

●按照索引下标获得元素(从左到右),Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推

lindex <key> <index>

在这里插入图片描述

●Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。

llen <key>

在这里插入图片描述

  • linsert命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误
linsert <key> before <value> <newvalue>

在这里插入图片描述
从左边删除n个value(从左到右)
n 的值可以是以下几种:
n > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
n < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
n = 0 : 移除表中所有与 VALUE 相等的值。

lrem <key> <n> < value>

在这里插入图片描述

下表列出了列表相关的基本命令:

序号命令描述
1BLPOP key1 [key2 ] timeout移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
2BRPOP key1 [key2 ] timeout移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
3BRPOPLPUSH source destination timeout从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
4LINDEX key index通过索引获取列表中的元素
5LINSERT key BEFORE|AFTER pivot value在列表的元素前或者后插入元素
6LLEN key获取列表长度
7LPOP key移出并获取列表的第一个元素
8LPUSH key value1 [value2]将一个或多个值插入到列表头部
9LPUSHX key value将一个或多个值插入到已存在的列表头部
10LRANGE key start stop获取列表指定范围内的元素
11LREM key count value移除列表元素
12LSET key index value通过索引设置列表元素的值
13LTRIM key start stop对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
14RPOP key移除并获取列表最后一个元素
15BRPOPLPUSH source destination timeout从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
16RPUSH key value1 [value2]在列表中添加一个或多个值
17RPUSHX key value为已存在的列表添加值

四、Redis 集合(Set)

➢Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一 个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
➢Redis的Set是string类型的无序集合。它底层其实是一个value,为null的hash表,所以添加,删除,查找的复杂度都是O(1)。

  • Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
  • 假如集合 key不存在,则创建一个只包含添加的元素作成员的集合。
  • 当集合 key 不是集合类型时,返回一个错误。
sadd <key> <value1> <value2> .....
  • 取出该集合的所有值。
smembers <key>

在这里插入图片描述

  • 如果成员元素是集合的成员,返回 1 。 如果成员元素不是集合的成员,或 key 不存在,返回 0 。
sismember <key> <value>

在这里插入图片描述

  • 返回集合的数量。 当集合 key 不存在时,返回 0 。
scard <key>

在这里插入图片描述

  • 删除集合中的某个元素。
srem <key > <value1> <value2> ....

在这里插入图片描述

  • 随机从该集合中吐出一个值。
spop <key>

在这里插入图片描述

  • 随机从该集合中取出n个值。 不会从集合中删除
srandmember <key> <n>

在这里插入图片描述

  • 返回两个集合的交集元素。
sinter <key1> <key2>

在这里插入图片描述

  • 返回两个集合的并集元素。
sunion <key1> <key2>

在这里插入图片描述

  • 返回两个集合的差集元素。不存在的集合 key 将视为空集。(返回显示只是key1有的而key2没有的)
sdiff <key1> <key2>

在这里插入图片描述

五、Redis 哈希(Hash)

  • Redis hash是一个键值对集合。
  • Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
  • 类似Java里面的Map<String,String>
    在这里插入图片描述
  • Hset 命令用于为哈希表中的字段赋值 。 如果哈希表不存在,一个新的哈希表被创建并进行 HSET操作。如果字段已经存在于哈希表中,旧值将被覆盖。
 - hset <key> <field><value>

在这里插入图片描述

  • 从key1集合field取出value
hget <key1> <field>

在这里插入图片描述

  • Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。此命令会覆盖哈希表中已存在的字段。 如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。
hmset <key1> <field1> <value1> <field2> <value2>

在这里插入图片描述

  • 查看哈希表.key中,给定域field是否存在。
 - hexists key <file>
  • 列出该hash集合的所有field
hkeys key 
  • 列出该hash集合的所有value
hvals <key>
  • 为哈希表key 中的域field的值加上增量increment
hincrby <key> <field> <increment>
  • 将哈希表key中的域field 的值设置为value,当且仅当域 field不存在.
hsetnx <key> <field> <value>

六、Redis 有序集合(sorted set)

Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score) ,这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了。
因为元素是有序的,所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。

  • 将一个或多个member元素及其score 值加入到有序集key当中。
 zadd <key> <scorei1> <valuei> <score2> <value2>...
  • 返回有序集key 中,下标在start ,stop之间的元素·带WITHSCORES,可以让分数一起和值返回到结果集。
zrange <key> <start> <stop>[WITHSCORES]
  • 返回有序集key中,所有score 值介于min和max之间(包括等于min或max )的成员。有序集成员按score值递增(从小到大)次序排列。
 zrangebyscore key min max [withscores][limit offset count]

同上,改为从大到小排列。

zrevrangebyscore key max min [withscores] [limit offset count]

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北街风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值