四:redis的sets类型相关操作(有序和无序集合)

================四五种(有序和无序集合):sets类型(就是集合)=============

一介绍:  set表示集合,添加是是随意添加的----->无序集合

set是集合,它是string类型的无序集合。

set是通过hash table实现的,添加,删除和查找的复杂度都是0(1)。

对集合我们可以取并集、交集、差集。

通过这写操作我们可以实现sns中的好友推荐和blog的tag功能

1:sadd

向名称key的set中添加元素(唯一的)

例:sadd myset1 one   ---->向集合myset1中添加元素one

sadd myset1 two

查看:smembers myset1

2:srem

删除名称为key的set中的元素

例:sadd myset2 one

srem myset2 one  --->删除one元素

3:spop

随机返回并删除名称为key的set中一的个元素

例:spop myset3    --->随机弹出删除的元素

4:sdiff

返回所有给定key与第一个key的差集

myset1=1,2  myset2=3,2    --返回1

例:sdiff myset1 myset2    ---->谁在前面以谁为标准

4:sdiffstore

返回所有给定key与第一个key的差集,并将结果保存在一个新的key中

例:sdiffstore myset4 myset2 myset3 ---->将myset2与myset3的差集弹出并保存到myset4中

5:sinter

返回所有给定key的交集(交集:里面相同的元素)

two,one three,one     --->one

例:sinter myset2 myset3  --->之间的交集

6:  sinterstore

返回所有给定key与第一个key的交集,并将结果保存在一个新的key中

例:sinterstore myset4 myset2 myset3 ---->将myset2与myset3的交集保存到myset4中

7:sunion

返回所有给定key的并集

例:sunion myset1 myset2   --->取并集

8:sunionstore

返回所有给定key的并集,并保存到新的key中

例:sunionstore myset4 myset1 myset2   --->取并集并 保存到myset4中

9:smove

从第一个key中对应的set中移除某个元素并添加到第二个对应的key中

例:smove myset2 myset7 three  --->将myset2中的元素移动到myset7里面

10:scard

返回名称为key的set的元素个数

例:scard myset8   ---->返回元素个数

11:sismember

测试某个元素是否是名称为KEY的set中的元素

例:sismember myset2 two   --->测试two是否是myset2中的元素

12:srandmember(无序的取)

随机返回名称为key的set的一个元素,但不删除元素

例:srandmember myset3   --->随机去除myset3的元素

13:

二介绍:  sorted sets=========》有序集合

sortes set是set的一个升级版本,它在set的基础上增加了一个顺序属性,

这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。

可以理解为有两列的MySQL表,一列存value,一列存顺序。操作中key理解为zset(有序集合的名称)的名字

1:    zadd  ---重复插入时候会不成功,且将顺序更新

向名称为key的zset中添加元素member,score用于排序,如果该元素存在,则更新其顺序

例:zadd myzset1 1 one   --->  插入了one并指定顺序号

zrange

取值:zrange myzset1 0 -1  -----> 取myzset1的所有元素

zrange myzset1 0 -1 withscores  ---->取出元素并吧顺序号输出

2:zrem 删除有序集合中的一个元素

删除名称为key的zset中的元素member

例子:zrem zset1 two   --->删除two元素

3:zincrby

如果在名称为key的zset中已经存在元素member,则改元素的score

增加increment(顺序号)否则向该集合中添加元素,其score的值为increment

例:zincrby ssett1 2 one   ---->对顺序号减

zincrby ssett1 -2 one  ---->对顺序号加

4:zrank

返回名称为key的zset中member元素的排名(按score从小到大排序)即下标

例:zrange zset2 0 -1 withscores

zrank zset2 four   ---->返回一个元素的索引值

5:zrevrank

返回名称为key的zset中member元素的排名(按score从大到小排序)即下标

例:zrevrank zset2 four ---->和zrank顺序相反

6: zrevrange

值按降序排序(score从大到小排序)

例:zrevrange zset2 0 -1 withscoress

7:zrangebyscore

返回集合中score在给定区域的元素

例:zrangebyscore zset2 2 4 withscores  --->取下标2,3,4,且有序返回

8:zcount

返回集合中score在给定区域的数量

例:zrangebyscore zset2 2 4     ----->2,3,4  ,就会返回3表示有3个元素

9:zcrad

返回集合元素中的个数

zcrad zset2    ---->zset2里面所有元素的个数

10:zremrangebyrank

删除集合中排名在给定区间的元素(按照索引删除)

例:zremrangebyrank zset2 1 1  ---->删除索引为 1到1的(1),2,3(删除2和3)

11:zremrangebyscore

删除集合中score给定区间的元素(按照顺序号删除)

例:zremrangebyscore zset2 2 5   --->删除顺序号为2到5

========================================END========================================

四:redis的sets类型相关操作(有序和无序集合)

时间: 2024-10-13 11:47:10

四:redis的sets类型相关操作(有序和无序集合)的相关文章

一:redis 的string类型相关操作

*redis客户端中的使用: =============一种:string类型的方法================ 介绍:string是redis的最简单类型,一个key对应一个value,string类型是二进制安全的. redis的string可以包含任何数据,比如jpg图片或者序列化的对象 1:一个key只包含一个value值,当设置相同值时=会覆盖 设置值:set name leyangjun 获取值:get name 2:setnx:(会判断设置的值是否存在,不存在则设置) 设置ke

二:redis 的hash类型相关操作

=====================二种:hash类型================== 介绍:redis -> hash是一个string类型的field和value的映射表 hash特别适合对应存储对象,相较于将对象的每个字段存成单个string类型 将一个对象存储在hash类型中会占用更少的内存,并且可以方便的存取整个对象 0:hset *如果 key(就是hash表) 不存在,一个新的哈希表被创建并进行 HSET 操作 设置hash field为指定值,如果key不存在,则先创建

三:redis的List类型相关操作

==========================三种:List类型===================== 介绍:list类型及操作 list是一个链接表结果,只要功能是push,pop.获取一个范围的所有值等等, 操作key理解为链表的名字,redis的list类型其实就是一个每个子元素都是string类型的双向链表. 我们可以通过push.pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列 1:lpush: 在key对应list的头部添加字符串元素 (

redis之sets类型及操作

sets类型及操作set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作,操作中key理解为集合的名字.set的是通过hash table实现(即set并没有顺序)的,所以添加.删除和查找的复杂度都是O(1).hash table会随着添加或者删除自动的调整大小.需要注意的是调整hash table大小时候需要同步(获取写锁)会阻塞其他读写操作,可能不久后就会改用跳表(skip list)来实现,跳表已经在sorted set中使用了.关于set集合类型

redis之sorted sets类型及操作

sorted sets类型及操作 sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序.可以理解为有两列的mysql表,一列存value,一列存顺序.操作中key理解为zset的名字. 和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个double类型的score.sorted set的实现是skip list和hash table的混合体.

redis sets类型及操作

sets类型及操作set是集合,它是string类型的无序集合.通过hash table实现,添加.删除.查找的复杂度都是0(1).对集合我们可以实现取交际.差集并集.通过这些操作我们可以实现SNS中的好友推荐和blog的tag(标签)功能 sadd    向集合中添加元素,成功返回1,失败返回0,重复值添加为失败    例如:    sadd myset1 hello smembers    查看集合中的元素    例如:    smembers myset1 scard    查看集合中的元

Redis笔记-String类型及操作(二)

String类型及操作 String是简单的类型 ,一个Key对应一个Value. String类型是二进制安全的. Redis的String可以包含任何数据,比如jpg图片或者序列化的对象 Set 设置Key对应的值为String类型的value 例如:添加一个name=lijie的键值对 127.0.0.1:6379> set name lijie//获取值127.0.0.1:6379> get name//重复赋值,会被覆盖 setnx 设置key对应的值为String类型的value,

redis之hashes类型及操作

hashes类型及操作Redis hash是一个string类型的field和value的映射表.它的添加.删除操作都是O(1)(平均).hash特别适合用于存储对象.相较于将对象的每个字段存成单个string类型.将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象.省内存的原因是新建一个hash对象时开始是用zipmap(又称为small hash)来存储的.这个zipmap其实并不是hash table,但是zipmap相比正常的hash实现可以节省不少hash本身

redis的sets类型

set是集合 , 它是string类型的无序集合 . set是通过hash table 实现的 , 添加.删除和查找的复杂度都是O(1) . 对集合我们可以取并集.交集.差集.通过这些操作我们可以实现sns中的好友推荐和blog的tag功能 . sadd :  向名称为key的set中添加元素 sadd  myset  "hello"  => 返回1 sadd  myset  "world" => 返回1 sadd  myset  "world