第四章:redis 数组结构的set和一些通用命令「建议收藏」

第四章:redis 数组结构的set和一些通用命令「建议收藏」第四章:redis 数组结构的set和一些通用命令

大家好,又见面了,我是你们的朋友全栈君。

存储set ,set不允许有重复元素;

设置 获取元素:

127.0.0.1:6379> sadd set1 a b c
(integer) 3
127.0.0.1:6379> SMEMBERS set1
1) "a"
2) "c"
3) "b"

插入相同元素只保留一个:

127.0.0.1:6379> sadd set1 a e f
(integer) 2
127.0.0.1:6379> smembers set1
1) "a"
2) "e"
3) "c"
4) "b"
5) "f"

删除多个元素:

127.0.0.1:6379> SMEMBERS set1
1) "c"
2) "b"
3) "e"
4) "f"
127.0.0.1:6379> serm set1 c f
(error) ERR unknown command 'serm'
127.0.0.1:6379> srem set1 c f
(integer) 2
127.0.0.1:6379> SMEMBERS set1
1) "e"
2) "b"

simember key 判断某个元素是否存在,返回1为存在,返回0 为不存在

127.0.0.1:6379> SMEMBERS set1
1) "e"
2) "b"
127.0.0.1:6379> SMEMBERS key e
(error) ERR wrong number of arguments for 'smembers' command
127.0.0.1:6379> SISMEMBER key e
(integer) 0
127.0.0.1:6379> SISMEMBER set1 e
(integer) 1
127.0.0.1:6379> SISMEMBER set1 r
(integer) 0

sdiff以前面的集合为参考,计算差集:

127.0.0.1:6379> sadd set2 b c d e
(integer) 4
127.0.0.1:6379> SMEMBERS set2
1) "d"
2) "e"
3) "c"
4) "b"
127.0.0.1:6379> SMEMBERS set1
1) "e"
2) "b"
127.0.0.1:6379> SDIFF set2 set3
1) "d"
2) "e"
3) "b"
4) "c"
127.0.0.1:6379> SDIFF set3 set2
(empty list or set)
127.0.0.1:6379> SDIFF set2 set1
1) "d"
2) "c"

sinter计算交集 sunion 计算并集:

127.0.0.1:6379> SMEMBERS set1
1) "e"
2) "b"
127.0.0.1:6379> SMEMBERS set2
1) "d"
2) "e"
3) "c"
4) "b"
127.0.0.1:6379> SINTER set1 set2
1) "e"
2) "b"
127.0.0.1:6379> SUNION set1 set2
1) "d"
2) "e"
3) "c"
4) "b"

scard计算元素总数:

127.0.0.1:6379> SCARD set1
(integer) 2
127.0.0.1:6379> SMEMBERS set1
1) "e"
2) "b"

srandmember随机取一个或多个数:

127.0.0.1:6379> SMEMBERS set2
1) "d"
2) "e"
3) "c"
4) "b"
127.0.0.1:6379> SRANDMEMBER set2
"e"
127.0.0.1:6379> SRANDMEMBER set2 2
1) "d"
2) "c"

sdiffstore把差集结果存储到一个新的集合中

127.0.0.1:6379> SMEMBERS set2
1) "d"
2) "e"
3) "c"
4) "b"
127.0.0.1:6379> SMEMBERS set1
1) "e"
2) "b"
127.0.0.1:6379> SDIFFSTORE r set1 set2
(integer) 0
127.0.0.1:6379> SDIFFSTORE r set2 set1
(integer) 2
127.0.0.1:6379> SMEMBERS r
1) "d"
2) "c"

sunionstore把交集结果存储到一个新的集合中:

127.0.0.1:6379> SUNIONSTORE r2 set1 set2
(integer) 4
127.0.0.1:6379> SMEMBERS r2
1) "d"
2) "e"
3) "c"
4) "b"

下面我们说说sorted-set有序排序的数据结构,也就是集合元素是有序排列的:

zadd 添加元素,这里我们以成绩和姓名为例,这里按成绩的从小到高排列的:

127.0.0.1:6379> zadd sort2 2 xiaoming 3 xiaohua 1 xiaohong
(integer) 3
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaoming"
3) "xiaohua"

zadd添加元素,有则更新,无则添加,也就是没有重复的值:

127.0.0.1:6379> zadd sort2 2 xiaoming 3 xiaohua 1 xiaohong
(integer) 3
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaoming"
3) "xiaohua"
127.0.0.1:6379> ZADD sort2 6 xiaoming
(integer) 0
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaohua"
3) "xiaoming"
127.0.0.1:6379> zadd sort2 4 xiaoliang
(integer) 1
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaohua"
3) "xiaoliang"
4) "xiaoming"

zrem删除元素:

127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaohua"
3) "xiaoliang"
4) "xiaoming"
127.0.0.1:6379> zrem sort2  xiaohua
(integer) 1
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaoliang"
3) "xiaoming"

zcard查看元素个数:

127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaoliang"
3) "xiaoming"
127.0.0.1:6379> ZCARD sort2 
(integer) 3

把分数和姓名都显示出来:

127.0.0.1:6379> ZRANGE sort2 0 -1 withscores
1) "xiaohong"
2) "1"
3) "xiaoliang"
4) "4"
5) "xiaoming"
6) "6"

zrevrange降序排列:

127.0.0.1:6379> ZREVRANGE sort2 0 -1 withscores
1) "xiaoming"
2) "6"
3) "xiaoliang"
4) "4"
5) "xiaohong"
6) "1"

新增两个元素,根据排名删除元素,这里删除前三个:

127.0.0.1:6379> ZADD sort2 2 xiaohuang
(integer) 1
127.0.0.1:6379> ZADD sort2 3 xiaozi
(integer) 1
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaohuang"
3) "xiaozi"
4) "xiaoliang"
5) "xiaoming"
127.0.0.1:6379> ZREMRANGEBYRANK sort2 0 2
(integer) 3
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaoliang"
2) "xiaoming"

zremrangebyscore 根据具体分数范围删除元素:

127.0.0.1:6379> ZRANGE sort2 0 -1 withscores
 1) "xiaohong"
 2) "1"
 3) "xiaohuang"
 4) "2"
 5) "xiaozi"
 6) "3"
 7) "xiaoliang"
 8) "4"
 9) "xiaoming"
10) "6"
127.0.0.1:6379> ZREMRANGEBYscore sort2 2 5
(integer) 3
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaoming"

再增加元素,然后根据分数范围查找:

127.0.0.1:6379> zadd sort2 2 xiaohuang 3 xiaozi 4 xiaoliang
(integer) 3
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohong"
2) "xiaohuang"
3) "xiaozi"
4) "xiaoliang"
5) "xiaoming"
127.0.0.1:6379> ZRANGEBYSCORE sort2 2 5
1) "xiaohuang"
2) "xiaozi"
3) "xiaoliang"

limit类似分页查找:

127.0.0.1:6379>  ZRANGE sort2 0 -1 withscores
 1) "xiaohong"
 2) "1"
 3) "xiaohuang"
 4) "2"
 5) "xiaozi"
 6) "3"
 7) "xiaoliang"
 8) "4"
 9) "xiaoming"
10) "6"
127.0.0.1:6379> ZRANGEBYSCORE sort2 0 9 limit 0 2
1) "xiaohong"
2) "xiaohuang"
127.0.0.1:6379> ZRANGEBYSCORE sort2 0 9 withscores limit 0 2
1) "xiaohong"
2) "1"
3) "xiaohuang"
4) "2"

zincrby加分:

127.0.0.1:6379> ZINCRBY sort2 10 xiaohong
"11"
127.0.0.1:6379> ZRANGE sort2 0 -1
1) "xiaohuang"
2) "xiaozi"
3) "xiaoliang"
4) "xiaoming"
5) "xiaohong"
127.0.0.1:6379> ZRANGE sort2 0 -1 withscores
 1) "xiaohuang"
 2) "2"
 3) "xiaozi"
 4) "3"
 5) "xiaoliang"
 6) "4"
 7) "xiaoming"
 8) "6"
 9) "xiaohong"
10) "11"

zcount计算某个评分范围内的个数:

127.0.0.1:6379> ZRANGE sort2 0 -1 withscores
 1) "xiaohuang"
 2) "2"
 3) "xiaozi"
 4) "3"
 5) "xiaoliang"
 6) "4"
 7) "xiaoming"
 8) "6"
 9) "xiaohong"
10) "11"
127.0.0.1:6379> ZCOUNT sort2 0 20
(integer) 5

redis的一些通用操作:

关键字查找key:

127.0.0.1:6379> keys s*
1) "sort2"
2) "set2"
3) "set1"
4) "sort"
5) "sort1"

查找s开头,后面只跟一个字符的key:

127.0.0.1:6379> set s1 aa
OK
127.0.0.1:6379> key s*
(error) ERR unknown command 'key'
127.0.0.1:6379> keys s?
1) "s1"

del删除元素:

127.0.0.1:6379> del sort s1
(integer) 2
127.0.0.1:6379> keys s*
1) "sort2"
2) "set2"
3) "set1"
4) "sort1"

rename重命名:

127.0.0.1:6379> set s2 ss
OK
127.0.0.1:6379> rename s2 s3
OK
127.0.0.1:6379> get s3
"ss"

expire设置有效时间,单位是秒:

127.0.0.1:6379> EXPIRE s3 12
(integer) 1
127.0.0.1:6379> s3 ttl
(error) ERR unknown command 's3'
127.0.0.1:6379> ttl s3
(integer) -2
127.0.0.1:6379> get s3
(nil)

type查看数据类型:

127.0.0.1:6379> type sort2
zset
127.0.0.1:6379> type name
string
127.0.0.1:6379> type l1
list

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106132.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 姿态估计与行为识别(行为检测、行为分类)的区别[通俗易懂]

    姿态估计与行为识别(行为检测、行为分类)的区别[通俗易懂]姿态估计和行为识别作为计算机视觉的两个领域,对于新人来说,较为容易弄混姿态估计和行为识别两个概念。 姿态估计(PoseEstimation)是指检测图像和视频中的人物形象的计算机视觉技术,可以确定某人的某个身体部位出现在图像中的位置,也就是在图像和视频中对人体关节的定位问题,也可以理解为在所有关节姿势的空间中搜索特定姿势。简言之,姿态估计的任务就是重建人的关节和肢干,其难点主要在于…

    2022年6月21日
  • mysql自定义函数详解_sql自定义函数例子

    mysql自定义函数详解_sql自定义函数例子摘要腾兴网为您分享:mysql自定义函数与动态查询,智学网,夜读小说,小睡眠,西餐菜谱等软件知识,以及猫语翻译器,江西校讯通,刷qq业务的网站,房洽洽,学士服照,爱站seo工具包,虚拟声卡驱动,隐藏分,卦象,供零在线永辉,七猫精品小说,海纳百川器,华尔街日报,双十一图片,中国地震信息网等软件it资讯,欢迎关注腾兴网。介绍下mysql自定义函数的例子,以及插入单引号的方法,动态执行查询与字符串拼接…

    2022年9月8日
  • 基本积分公式表_不定积分公式表大全

    基本积分公式表_不定积分公式表大全\(\large\intkdx=kx+C\)\(\large\intx^adx=\frac{x^{\alpha+1}}{\alpha+1}+C\)\(\large\int\frac{1

    2022年8月4日
  • MessageDigest详解

    MessageDigest详解一、概述java.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,如MD5或SHA算法。简单点说就是用于生成散列码。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。关于信息摘要和散列码请参照《数字证书简介》MessageDigest 通过其getInstance系列静态函数来进行实例化和初始化。MessageDigest对象通…

    2022年6月29日
  • 浙江新增python编程_9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段…「建议收藏」

    浙江新增python编程_9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段…「建议收藏」原标题:9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段最近一个非常火爆的话题在家长群引起热议——浙江省中小学学习编程。浙江官方教育部宣布:今年9月份开始的新学期,三到九年级信息技术课将替换新教材。其中,八年级将新增Python课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法等内容按照教材规划五六年级开始接触。下面我们来具体看一…

    2022年5月13日
  • 获取窗口句柄 c语言,VC++编程获取窗口句柄的方法小结分享「建议收藏」

    获取窗口句柄 c语言,VC++编程获取窗口句柄的方法小结分享「建议收藏」—-想了解VC++编程获取窗口句柄的方法小结分享的全部内容且更多的C语言教程关注VC++编程获取窗口句柄的方法小结分享实例讲述了VC++编程获取窗口句柄的方法。分享给大家供大家参考,具体如下:在VC++编程中常需获取控件或窗体句柄,下面总结了几种方法,还希望大家能多多补充。1、自身窗口句柄可用AfxGetMainWnd获取。2、系统中其他APP的窗口句柄可用FindWindow获取(用SPY帮一下…

    2022年7月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号