七天玩转Redis | 打卡第2天 Redis 五大数据类型

孤ゥ辰 孤ゥ辰 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

Redis的五大数据类型:String,List,Set,Hash,Zset

String类型:

Redis中最常用的数据类型,但是需要注意不能只会使用String类型,应该根据实际情况灵活的定数数据的数据类型

设置指定key的值:

Redis中给String类型的数据设置指定key的方法就是最基本的设置key-value的方法

语法:SET key value

例:SET k3 v3

获取指定key的值

上面设置基本的数据,需要使用时,如何取出设置的数据?

语法;GET key

例:GET k3

如果没有指定key的值则会返回(nil)若有则返回指定key的value值

返回key中字符串值的子串

这个命令的作用时获取redis中已经存在的字符串的子串,同时可以指定一个下标索引,指定要获取哪一段字符

语法:GETRANGE key start end

Start:为截取的起始下标

End:为截取的终止下标

例:GETRANGE  mykey 2

如果要截取某一个字符到最后部分的子串,那么可以直接将最后一个参数设置为-1

如果设置的获取子串的范围比较大,超过了字符串的长度,那么只会返回到字符串的最后一个字符

获取多个给定key的值

与GET命令不同,GET命令只能获取一个key对应的值,而这个命令可以用于获取多个key对应的值,

语法:MGET key1 [key2...] ---> MGET key1 key2

例:MGET mykey mykey1 mykey2

返回key所对应字符串的长度

这个命令的作用就是获取当前索引对应的字符串的长度

语法:STRLEN key

例:STRLEN mykey

设置一个或多个键值对

SET是设置单个键值对的,同时设置多个键值对则需要使用MSET命令

语法:MSET key1 value1 key2 value2

扩展:还有一个命令与MSET命令相似,都能够设置多个键值对,但是必须要保证key不存在,负责所有的key-value都会赋值失败

语法:MSETNX key1 value1 key2 value2

将key中所存储的数值加1

INCR命令会将value的值加1并返回运算后的value的值,但需要注意需要是数才能加1,负责会报错

语法:INCR key

 

扩展:为指定的key加上指定的增量

语法:INCRBY key increment

Increment为要增加的值

同样会返回改变后的value的值

将key中存储的值减一

语法:DECR key

会返回改变后的value的值

将指定key中存储的值减去指定的值

语法:DECRBY key increment

会返回改变后的value的值

字符串追加

如果key已经存在并且是一个字符串,那么可以使用APPEND命令将指定的value追加到该key原来值的名为,会返回追加之后值的长度

APPEND key value

key为索引

Value为需要追加的字符串

Hash类型

Hash类型是一个String类型的field(字段)和value的映射表,他的作用是可以用来存储我们定义的数据对象,简而言之,一个key下存储了多个key-value的情况

 

关于HashMap底层实现

图解HashMap底层实现 HashMap高频面试题1,Map接口和List接口是什么关系?2、Map有哪些常用的实现类?3、请阐述HashMap的put过程?4、链表中是按照怎样的顺序存放数据的?5、Hash(key)方法是如何实现的?6、为什么HashMap的容量一直是2的倍数?7、Hash冲突如何解决?8、HashMap是如何扩容的?9、扩容后元素怎么存放的?10、JDK1.7和JDK1.8对HashMap的实现比较Hello,你好呀,我是灰小猿!一个超会写bug的程序猿!Map接 https://huixiaoyuan.blog.csdn.net/article/details/117629081

 

设置一个Hash数据

设置Hash数据所使用的命令不是SET,而是HMSET

语法:HMSET key field1 value1 [field2 value2...]

Field为下面存储的一个键值对的键

Value为该键值对应的值

获取指定哈希表中所有的字段和值

语法:HGETALL key

获取存储在哈希表中指定字段的值

语法:HGET key field

Field:value中的key

删除一个或多个哈希表字段

语法:HDEL key field1 [field2...]

获取哈希表中字段的数量

语法:HLEN key

获取哈希表中的所有字段

返回所有的字段,但不会返回字段所对应的值

语法:HKEYS key

获取哈希表中所有的值

返回所有的值,但不会返回值所对应的字段

List类型

列表类型,在redis中列表存储的是一个一个的字符串,按照插入的顺序进行排序,在redis中可以指定实在列表的头部或者尾部插入

将一个或多个元素插入列表表头

在redis中向列表中插入数据的命令是LPUSH,返回值是插入的数据的个数,命令中的L表示left,意思是在表头插入,会返回插入的数据的个数

语法:LPUSH key value1 [value2...]

插入的顺序value1,value2

其在key列表中的排序为value2,value1

将一个或多个元素插入列表尾部

命令中的R表示right,意思是在列表尾部插入

语法:RPUSH key value3 [value4...]

插入的顺序value3,value4

其在key列表中的排序为value3,value4

 

因此其前两轮插入后,key 列表中的元素排列为[value2,value1,value3,value4]

 

获取列表长度

获取列表的长度

语法:LLEN key

会返回key的长度

 

通过索引获取列表中的元素

语法:LINDEX key index

获取key键中下标为index的元素

移除并获取列表第一个元素

LPOP命令可以移除列表中的第一个元素,并且返回该元素的值

语法:LPOP key

获取key列表的第一个值,并删除key列表的第一个值

移除并获取列表最后一个元素

RPOP命令可以移除列表中的最后一个元素,并返回该元素的值

语法:RPOP key

 

 

Set集合

Redis中的Set集合和java中的Set集合所表示的含义是一样的,都是无序集合,且集合中的元素是唯一的,不可重复的

 

向集合中添加一个或多个成员

SADD命令会向集合中添加元素,并且返回插入的成员的个数

语法:SADD key member1 [member2...]

Member1表示要插入的成员

获取集合中成员的个数

SCARD命令会获取集合中成员的个数

语法:SCARD key

返回第一个集合与其他集合之间的差异

SDIFF命令会返回第一个集合相对于其他集合的差异

语法:SDIFF key1 [key2...]

Key1:表示对比的集合

Key2:表示被对比的集合,被对比的可以有多个

会返回:key1于key2而言有哪些不同的成员

返回所给定所有集合的交集

SINTER命令,可以返回所给定的两个或多个集合的交集

语法:SINTER key1 [key2...]

返回集合中的所有元素

语法:SMEMBERS key

ZSet集合

ZSet集合与Set集合类似,也是不允许成员重复,但需要注意,Set集合中成员是无需排列的,而ZSet集合中的成员都是有序排列的

原因是ZSet集合中的每一个元素都会关联一个double类型的分数(也可以理解为权重)redis也正是通过分数来为集合中的成员进行从小到达排序的,所以有序集合的成员是虽然唯一的,但是分数(score)却是可以重复的

向有序集合中添加一个或多个成员

ZADD命令,可以向ZSet集合中插入一个或多个成员,但是如果该成员已经存在,那么就会更新该成员所对应的分数

语法:ZADD key score1 member1 [score2 member2...]

Key 为ZSet集合的索引

Score为插入成员的分数

Member为对应的成员

获取有序集合的成员数

ZCARD命令可以获得指定有序集合的成员变量个数

语法:ZCARD key

计算有序集合中指定区间分数的成员数

语法:ZCOUNT key min max

Min 为区间最小值,max为区间最大值

根据分数返回ZSet集合指定区间内的成员

语法:ZRANGEBYSCORE key min max [WITHSCORES]

[WITHSCORES]:可选,表示是否带上对应的score

移除ZSet集合中的一个或多个元素

语法:ZREM key member1 [member2...]

 

 

 

 

 

 

 

...全文

相关推荐

基于Redis与QQBot SDK的频道打卡机器人.zip

基于Redis与QQBot SDK的频道打卡机器人.zip

檀越@新空间

学生签到打卡系统源码.zip

【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip

土豆片片

springboot199疫情打卡健康评测系统.zip

springboot199疫情打卡健康评测系统

达达KZT

课设毕设springboot疫情打卡健康评测系统-LW+源码可运行.zip

课设毕设基于SpringBoot的系统源码可运行

Link_Zero

redis使用总结--原理、持久化、常见问题等等

redis小总结,希望与各位大佬一起进步,有需要的可以加我vx:sunshine_java,有空可以一起交流。

未来可期的少年
评论
收藏 已收藏
分享
返回顶部