Redis学习笔记

Stella981
• 阅读 400

这篇是接着上篇来的,所以标号就继续了~~~~

四、set

介绍:
set集合元素是不重复的无序的。set类型与list类型有相似之处,如图:

Redis学习笔记
命令:
①sadd/smembers/srem/sismember  添加/获取/删除/是否是set的元素
sadd set a,sadd set b,
smembers set(返回set集合所有的元素) srem set a, sismember b
sadd set1 a b c
②sdiff/sinter(交集)/sunion(并集)
sdiif set set1 返回差集,即返回set有的而set2中没有
sinter set set1 返回两个set都有的
sunion set set1 返回两个的都有的
③sdiffstore/sinterstore/sunionstore
将②中的数据存储  sdiffstore a1 set set1 存到a1中 a1也是一个set集合
④scard(获取集合长度)/spop(随机从集合中取出并删除一个元素)
scard set 返回set集合长度,spop set 随机从set中弹出一个元素
⑤srandmember key [count]
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。

如果 count 大于等于集合基数,那么返回整个集合。
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。

五、sortedset

介绍:
有序集合,在set集合类型的基础上为集合中的每个元素都关联了一个分数,这样可以很方便的获得分数最高的N个元素(topN)。
有序集合类型和列表类型的差异
相同点
(1)二者都是有序的
(2)二者都可以获得某一范围的元素
不同点
(1)列表类型是通过双向链表实现的,获取靠近两端的数据速度极快,当列表中元素增多后,访问中间的数据速度会很慢,所以它比较适合很少访问中间元素的应用
(2)有序集合类型是使用散列表和跳跃表(skip list)实现的,所以即使读取位于中间部分的数据速度也很快
(3)列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改这个元素的分值)
(4)有序集合要比列表类型更耗费内存
命令:
①zadd/zscore/zrange/zrevrange/  添加/获取指定元素分数/从小到大返回/从大到小返回
zadd zset 10 a zadd zset 20 b zadd zset 5 c
zscore zset b(返回20)
zrange zset 0 -1 返回(c a b)有序
zrevrange zset 0 -1 (b a c)
②zrangebyscore(默认是闭区间,可使用"("使用开区间)
zrangebyscore zset 0 10 获取zset中0分到10分的元素 这里返回c和a
zrangebyscore zset 0 (10 获取zset中0分到10分的元素 这里返回c
③zincrby/zcard/zcount(获取指定分数范围的元素个数)
zincrby zset 6 c 让zset中c元素的值加6
zcard zset 返回zset中元素个数
zcount zset 0 10 指定分数范围的元素
④zrem/zremrangebyrank/zremrangebyscore
zrem zset a
zremrangebyrank zset 0 1 角标区间删除
zremrangebyscore zset 0 10 分数范围删除
扩展:+inf(正无穷)    -inf(负无穷)

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
Java内功系列
面试官:你能简单介绍List和Set有什么区别吗?小憨:List是一个有序的集合,在内存是连续存储的,可以存储重复的元素,List查询快,增删慢;Set是一个无序的集合,在内存中不连续,不可以存储重复的元素,Set增删快,查询慢;面试官:那HashSet是如何保证元素不重复的?小憨:3分钟。。。
Wesley13 Wesley13
2年前
oracle游标的例子
declare    cursor ca is select id_no, name from user where ym201401;begin    for cb in ca loop        update path set enamecb.name where id_nocb.id
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这