Redis数据类型及命令

Redis数据类型

一、String

String是redis最基本的数据类型,也是最简单的key-value类型,value可以是字符串,也可以是数字等类型,一个键最大能存储512M。String类型是二进制安全的,可以包含任何数据,包括序列化的对象、图片的二进制数等

1、赋值命令:

SET KEY_NAME VALUE,设置给定key对应的值,若key已存在则覆盖旧值

SETNX KEY_NAME VALUE,若key不存在,则设置对应的键值,返回1,若key已存在则不设新值且返回0,使用来解决分布式锁的方案之一

2、取值命令

GET KEY_NAME ,若key不存在,则返回nil,若key对应的value不是字符串类型,返回一个错误

GETRANGE Key start end,用于获取存储指定key中字符串的子串,返回字符串截取由start到end之间的子串(包括start和end)

在这里插入图片描述
GETBIT KEY offset,对key所存储多的字符串,获取指定偏移量上的位

GETSET KEY_NAME VALUE,用于设置key的值,并返回key的旧值,当key不存在时返回nil

3、删除命令

DEL KEY_NAME,删除指定的key,若存在该key返回1,否则返回0

4、批量处理

MSET k1 v1 k2 v2 …,批量写入多个键值对

**MGET k1 k2 k3 …**批量读出多个键对应的值

在这里插入图片描述

5、自增\自减

INCR KEY_NAME,自增操作,将key中存储的数字值增加1,若key不存在则key会被初始化为0,然后执行INCR操作,若key所对应的值非整数则会返回异常

在这里插入图片描述

在这里插入图片描述

DECR KEY_NAME,自减操作,将key中存储的数字值减1,若key不存在则key会被初始化为0,然后执行INCR操作,若key所对应的值非整数则会返回异常

INCRBY KEY_NAME increment,将key中的数字增加指定的数值

在这里插入图片描述

DECRBY KEYNAME decrement,将key中的数字减少指定的 数值

6、其他操作

ADDPEND KEY_NAME VALUE,将指value追加到指定的key对应的值末尾,若该key不存在,则为其赋值

在这里插入图片描述

STRLEN KEY_NAME,返回指定key对应的value的长度

7、应用场景
  • 用于保存单个字符串或JSON字符串数据
  • 存储图片
  • 计数器(粉丝数、点赞数等)

二、Hash

Hash即哈希表,是一个String类型额fiel和value的映射表,可以看成具有KEY和VALUE的MAP容器,Redis中每个Hash可以存储2^32-1个键值对。Hash很适合存储对象。

1、赋值命令

HSET KEY FIELD VALUE,为指定的key设定相应的field和value

HMSET KEY FIELD VALUE [FIELD1 VALUE1]…,将多个field-value对添加到哈希表key中

HSETNX KEY FIELD VALUE,只有当字段field不存在时才为field赋值

2、取值命令

HGET KEY FIELD,获取存储在hash中的FIELD对应的值

HMGET KEY FIELD [FIELD1]…,获取hash中给定的所有的field对应的值

HGETALL KEY,返回hash中所有的字段

在这里插入图片描述

3、删除命令

HDEL KEY FIELD1[FIELD2]…,删除hash中的一个或多个字段

4、自增

HINCRBY KEY FIELD increment,为哈希表key中的指定字段的整数值加上增量increment

HINCRBYFLOAT KEY FIELD increment,为哈希表key指定字段的浮点数值增加增量increment

在这里插入图片描述

5、其他命令

HEXISTS KEY FIELD,查看哈希表key中是否存在字段FIELD

HKEYS KEY,获取哈希表key中的所有FIELD

HLEN KEY,获取哈希表key中的

三、list

list类型是一个链表结构的集合,主要功能由push、pop、获取元素等。list是一个双向链表,既可以作为栈,也可以作为队列,有些类似于JAVA中的LinkedList。

1、赋值命令

LPUSH KEY VALUE1 [VALUE2]…,将一个或多个值插入到链表头部

RPUSH KEY VALUE1 [VALUE2]…,将一个或多个值插入到链表尾部

LPUSHX KEY VALUE,将一个值插入到已存在的链表头部,若链表不存在,则操作失败

RPUSHX KEY VALUE,将一个值插入到已存在的链表尾部,若链表不存在,则操作失败

这里要注意的是,LPUSH是从左边插入,当插入多个元素时,后一个元素总是被插在前一个元素的左边,因此命令执行完成后,链表中的顺序和原命令中的顺序是相反的;RPUSH则相反。

在这里插入图片描述

2、取值命令

LINDEX KEY INDEX,通过索引获取链表中的元素

LRANGE KEY START STOP,获取链表指定索引范围内的元素(闭区间)

在这里插入图片描述

要注意的是,LINDEX与LRANGE都可以用负数来表示索引,可以把它想象成一个环,那么-1 就表示链表最后一个元素,-2表示道数第二个元素以此类推。因此当元素数量较多时,我们可以用LRANGE 0 -1来遍历链表

在这里插入图片描述

3、删除命令

LPOP KEY,移除并返回链表第一个元素

RPOP KEY,移除并返回链表的最后一个元素

在这里插入图片描述

BLPOP KEY1 [KEY2]… timeout,移除并返回链表的第一个元素,若链表没有元素会阻塞链表直至等待超时或可弹出元素为止,例如下面l1并不存在,控制台会被阻塞10秒

在这里插入图片描述

在这个等待的过程中,如果我们在另一个控制台创建了一个链表l1,那么这时l1就可以执行pop操作,原先的控制台执行BLPOP退出,控制台只阻塞了28秒

在这里插入图片描述

在这里插入图片描述

BRPOP KEY1 [KEY2]… timeout,移除并返回链表的最后一个元素,若链表中没有元素则阻塞链表直到等待超时或发现可弹出元素为止

LTRIM KEY START STOP,对一个链表进行修剪,让链表只保留start到stop之间的元素,其余的元素会被删除

4、修改命令

LSET KEY INDEX VALUE,通过索引修改元素的值

LINSERT KEY BEFORE|AFTER WORLD VALUE,将值VALUE插入到值WORLD的前方或后方

5、其他命令

RPOPLPUSH SOURCE DESTINATION,移除链表的最后一个元素并将元素添加到另一个链表并返回该值

在这里插入图片描述

RPOPLPUSH SOURCE DESTINATION TIMEOUT,从一个链表中弹出一个值并添加到另一个链表中并返回该值,若链表中没有元素会阻塞链表直至等待超时或发现可弹出元素为止

四、set

set是String的无序集合,集合的成员是唯一的,不允许出现重复的数据。redis中的set是通过哈希表实现的。set的最大成员数是2^32-1

1、赋值命令

SADD KEY MEMBER1 [MEMBER2]…,向集合中添加多个元素

2、取值命令

SMEMBERS KEY,返回集合中的所有成员

SRANDMEMBER KEY [COUNT],随机返回集合中一个或多个成员

3、删除命令

SREM KEY MEMBER1 [MEMBER2]….,移除集合中的一个或多个成员

SPOP KEY [COUNT],移除并返回集合中的一个随机元素

SMOVE SOURCE DESTINATION MEMBER,将MEMBER元素元素从SOURCE集合移动到DESTINATION集合中

在这里插入图片描述

4、差集命令

SDIFF KEY1 [KEY2]…,返回所给定的所有集合的差集,若差集为空返回empty array

SDIFFSTORE DESTINATION KEY1 [KEY2]…,返回给定所有集合的差集并存储到集合DESTINATION中

5、交集命令

SINTER KEY1 [KEY2]…,返回给定所有集合的交集,若交集为空返回empty array

SINTERSTORE DESTINATION KEY1 [KEY2]…,返回给定所有集合的交集并存储到集合DESTINATION中

6、并集命令

SUNION KEY1 [KEY2]…,返回给定所有几何的并集

SUNIONSTORE DESTINATION KEY1 [KEY2]…,返回给定所有集合的并集并存储到集合DESTINATION中

7、其他命令

SCARD KEY,获取集合的成员数量

SISMEMBER KEY MEMBER,判断MEMBER是否是集合KEY的成员

五、ZSet

Zset是set集合的补充,是一种有序但不重复的集合。相比于Set,ZSet中每个元素会关联一个double类型的分数,redis会通过分数来为集合进行从小到大的排序。ZSet中的成员是唯一的,但分数是可以重复的。ZSet中最大成员数为2^32-1。ZSet常用于排行榜。

1、赋值命令

ZADD KEY SCORE2 MEMBER1 [SCORE2 MEMBER2]…,向有序集合添加一个或多个成员,或更新已存在的成员的分数

2、取值命令

ZRANGE KEY START STOP [WITHSCORES],通过索引区间返回有序集合指定区间内的成员(根据SCORE从低到高排序),和list类似我们可以用ZRANGE KEY 0 -1来遍历所有元素

ZRANGEBYSCORE KEY MIN MAX [WITHSCORES] [LIMIT],通过分数返回指定区间内的成员(根据SCORE从低到高排序)

ZREVRANGE KEY START STOP [WITHSCORES],通过索引区间返回集合中指定区间内的成员(根据SCORE从高到低排序)

ZREVRANGEBYSCORE KEY MAX MIN [WITHSCORES] [LIMIT],通过分数区间返回指定区间内的成员(根据SCORE从高到低排序)

3、删除命令

ZREM KEY MEMBER1 [MEMBER2]…,移除集合中的一个或多个成员

ZREMRANGEBYRANK KEY START STOP,移除集合中给定的区间中的所有成员(根据SCORE从低到高排序)

ZREMRANGEBYSCORE KEY MIN MAX,移除集合中给定的分数区间得到所有成员(根据SCORE从低到高排序)

4、其他命令

ZCARD KEY,获取集合的成员数

ZCOUNT KEY MIN MAX,计算在有序集合中指定区间分数的成员数

ZRANK KEY MEMBER,返回成员MEMBER在集合中的索引

ZINCRBY KEY INCREMENT MEMBER,将成员MEMBER的分数增加增量INCREMENT并返回修改后的分数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值