Redis3:Hash类型、List类型、Set类型、SortedSet类型
欢迎来到“雪碧聊技术”CSDN博客!
在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。
让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在“雪碧聊技术”与您共同成长!
目录
一、Hash类型
1、不使用Hash类型时存在的问题
2、使用Hash类型解决上述问题
3、Hash类型的常见命令
二、List类型
1、介绍
2、List类型的特征
3、List类型的常见命令
4、思考
三、Set类型
1、介绍
2、Set类型的特征
3、Set类型的常见命令
4、案例
四、SortedSet类型
1、介绍
2、SortedSet类型的特征
3、SortedSet类型的常见命令
4、案例
一、Hash类型
1、不使用Hash类型时存在的问题
如下图,此时value是字符串的形式,此时想修改name、age属性,就十分麻烦,因为获取时太费劲了。
2、使用Hash类型解决上述问题
可以将value中的每个字段,单独存储,这样方便使用每个字段。
3、Hash类型的常见命令
举例:
二、List类型
1、介绍
Redis中的List类型与Java中的LinkedList类似,可以看做一个双向链表。既可以正向检索也可以反向检索。
2、List类型的特征
- 有序
- 元素可以重复
- 插入、删除速度快
- 查询速度一般
因此我们一般使用List类型的value,来保存对顺序有要求的数据,比如:朋友圈点赞列表、评论列表等。
3、List类型的常见命令
举例:
下面演示BLPOP命令(阻塞式的弹出元素,即:没有元素时,不返回空,而是先等一段时间):
4、思考
三、Set类型
1、介绍
redis中的Set结构,与Java中的HashSet类似,因此具备与HashSet类似的特征。
2、Set类型的特征
- 无序
- 元素不可重复
- 查找速度快
- 支持交集、并集、差集等功能
3、Set类型的常见命令
举例:
4、案例
实现:
192.168.6.100:6379[1]> SADD zhangsan lisi wangwu zhaoliu
(integer) 3
192.168.6.100:6379[1]> SADD lisi wangwu mazi ergou
(integer) 3
192.168.6.100:6379[1]> SCARD zhangsan
(integer) 3
192.168.6.100:6379[1]> SINTER zhangsan lisi //求两集合的交集
1) "wangwu"
192.168.6.100:6379[1]> SDIFF zhangsan lisi //求两集合的差集
1) "zhaoliu"
2) "lisi"
192.168.6.100:6379[1]> SUNION zhangsan lisi //求两集合的并集
1) "wangwu"
2) "lisi"
3) "zhaoliu"
4) "mazi"
5) "ergou"
192.168.6.100:6379[1]> SISMEMBER zhangsan lisi
(integer) 1
192.168.6.100:6379[1]> SISMEMBER lisi zhangsan
(integer) 0
192.168.6.100:6379[1]> SREM zhangsan lisi
(integer) 1
192.168.6.100:6379[1]>
四、SortedSet类型
1、介绍
redis中的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但二者底层数据结构却有很大差别。
SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。
2、SortedSet类型的特征
- 可排序
- 元素不重复
- 查询速度快
因为SortedSet具有可排序的特征,因此经常被用来实现排行榜(即:top1、top2.....)这样的功能。
3、SortedSet类型的常见命令
4、案例
实现:
第一步:使用redis的SortedSet类型的key,存入上述的数据
可见,此时每个同学的分数,正好充当SortedSet类型中的score属性(排名的依据)。
第二步:实现要求
192.168.6.100:6379[1]> ZREM student Tom //删除Tom同学
(integer) 1
192.168.6.100:6379[1]> ZSCORE student Amy //获取Amy同学的分数
"92"
192.168.6.100:6379[1]> ZRANK student Rose //获取Rose同学的排名(升序)
(integer) 2
192.168.6.100:6379[1]> ZREVRANK student Rose //获取Rose同学的排名(降序)
(integer) 3
192.168.6.100:6379[1]> ZCARD student //查询student键中,有多少元素
(integer) 6
192.168.6.100:6379[1]> ZCOUNT student 0 80 //查询80分以下有几个学生
(integer) 2
192.168.6.100:6379[1]> ZINCRBY student 2 Amy //给Amy同学加2分
"94"
192.168.6.100:6379[1]> ZRANGE student 0 2 //查出成绩前3名的同学(升序)
1) "Miles"
2) "Jerry"
3) "Rose"
192.168.6.100:6379[1]> ZREVRANGE student 0 2 //查出成绩前3名的同学(降序)
1) "Amy"
2) "Lucy"
3) "Jack"
192.168.6.100:6379[1]> ZRANGEBYSCORE student 0 80 //查出成绩80分以下的所有同学
1) "Miles"
2) "Jerry"
192.168.6.100:6379[1]>
以上就是redis中的Hash类型、List类型、Set类型、SortedSet类型的全部内容,想了解更多关于redis的知识,请关注本博主~~