Set是不重复且无序的字符串元素的集合。

还可以对set集取交集,并集,差等等。

在Redis中大概有15个操作Set的命令。

SADD key member [member ...]:添加一个或者多个元素到集合(set)里,复杂度O(N),N为要添加的元素个数。

SMEMBERS key:获取集合key里面的所有的成员。复杂度为O(N),N为集合的基数。

SCARD key:获取集合里面的元素数量,时间复杂度为O(1)。

SRANDMEMBER key [count]:从集合里面随机获取一个key,时间复杂度为O(1)。

SPOP key [count]:删除并获取一个集合里面的元素,时间复杂度为O(1)。

SREM key member [member ...]:从集合里删除一个或多个key,复杂度O(N),N为要删除的元素个数。

SISMEMBER key member:确定一个给定的值是一个集合的成员

27.0.0.1:6379> sadd ids id001 id002
(integer) 2
127.0.0.1:6379> smembers ids
1) "id002"
2) "id001"
127.0.0.1:6379> scard ids
(integer) 2
127.0.0.1:6379> sadd ids id003 id004
(integer) 2
127.0.0.1:6379> srandmember ids 2
1) "id001"
2) "id002"
127.0.0.1:6379> srandmember ids 2
1) "id003"
2) "id001"
127.0.0.1:6379> spop ids 1
1) "id004"
127.0.0.1:6379> sismember ids id001
(integer) 1
127.0.0.1:6379> sismember ids id002
(integer) 1
127.0.0.1:6379> sismember ids id004
(integer) 0
127.0.0.1:6379> srem ids id001 id002
(integer) 2
127.0.0.1:6379> sismember ids id001
(integer) 0
127.0.0.1:6379> srem ids id001 id002
(integer) 0
127.0.0.1:6379>

SDIFF key [key ...]:获得与所给定集合的差集,时间复杂度为O(N),N为所给定集合的成员数量之和。

SINTER key [key ...]:获得两个集合的交集,时间复杂度O(N * M), N 为给定集合当中基数最小的集合, M 为给定集合的个数。

SUNION key [key ...]:获取所给定集合的并集,时间复杂度为O(N),N为所给定集合的成员数量之和。

SUNIONSTORE destination key [key ...]:合并set元素,并将结果存入新的set里面,时间复杂度为O(N),N为所给定集合的成员数量之和。

SINTERSTORE destination key [key ...]:获得两个集合的交集,并存入新的结果集,时间复杂度O(N * M), N 为给定集合当中基数最小的集合, M 为给定集合的个数。

SDIFFSTORE destination key [key ...]:获得队列不存在的元素,并存入新的结果集,时间复杂度O(N), N 是所有给定集合的成员数量之和。

SMOVE source destination member:移动集合里面的一个元素member,从集合source到另一个集合destination,时间复杂度O(1)。

127.0.0.1:6379> smembers set1
1) "set14"
2) "set13"
3) "set12"
4) "set11"
127.0.0.1:6379> smembers set2
1) "set14"
2) "set23"
3) "set12"
4) "set2"
127.0.0.1:6379> sdiff set1 set2
1) "set13"
2) "set11"
127.0.0.1:6379> sinter set1 set2
1) "set14"
2) "set12"
127.0.0.1:6379> sunion set1 set2
1) "set14"
2) "set23"
3) "set11"
4) "set13"
5) "set2"
6) "set12"
127.0.0.1:6379> sdiffstore set3 set1 set2
(integer) 2
127.0.0.1:6379> smembers set3
1) "set13"
2) "set11"
127.0.0.1:6379> sunionstore set4 set1 set2
(integer) 6
127.0.0.1:6379> smembers set4
1) "set14"
2) "set23"
3) "set11"
4) "set13"
5) "set2"
6) "set12"
127.0.0.1:6379> sinterstore set5 set1 set2
(integer) 2
127.0.0.1:6379> smembers set5
1) "set14"
2) "set12"
127.0.0.1:6379> smove set1 set2 set13
(integer) 1
127.0.0.1:6379> smembers set1
1) "set14"
2) "set12"
3) "set11"
127.0.0.1:6379> smembers set2
1) "set14"
2) "set23"
3) "set12"
4) "set2"
5) "set13"
127.0.0.1:6379>

SSCAN key cursor [MATCH pattern] [COUNT count]:迭代set里面的元素

Redis常用命令--Sets的更多相关文章

  1. 第2讲 Redis常用命令与高级应用

    目录 一.redis数据类型 5. sorted sets类型和操作 二.Redis常用命令 1.键值相关命令 2.服务器相关命令 三. redis高级应用 1. 给redis服务器设置密码 2.持久 ...

  2. Redis常用命令与高级应用

    附: 127.0.0.1:6379> set xiaofei 小飞 OK 127.0.0.1:6379> get xiaofei "\xe5\xb0\x8f\xe9\xa3\x9 ...

  3. redis常用命令-2

    redis常用命令 type your_key #查看Key类型 del your_key #删除key keys * #所有key info #信息 /usr/local/bin/redis-cli ...

  4. Redis常用命令

    Redis常用命令Redis提供了丰富的命令对数据库和各种数据类型进行操作,这些命令可以再Linux终端使用.1.键值相关命令2.服务器相关命令 一.键值相关命令 1.get get 键值 当 key ...

  5. Redis常用命令手册:服务器相关命令

    Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如各类语言包,这些命令都有对应的方法.下面将Redis提供的命令做一 ...

  6. redis redis常用命令及内存分析总结(附RedisClient工具简介

    redis常用命令及内存分析总结(附RedisClient工具简介 by:授客 QQ:1033553122 redis-cli工具 查看帮助 连接redis数据库 常用命令 exists key se ...

  7. Redis快速起步及Redis常用命令大全

    本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的 ...

  8. redis配置密码 redis常用命令

    redis配置密码 1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 [plain] view plain copy   #requi ...

  9. redis常用命令及持久化机制

    redis  常用命令 查找redis服务文件 find / -name  redis-server 查找配置文件 find / -name redis.conf 启动服务时候,要指定配置文件 启动r ...

随机推荐

  1. Entity Framework——并发策略

    使用EF框架遇到并发时,一般采取乐观并发控制. 1支持并发检验 为支持并发检验,需要对实体进行额外的设置.默认情况下是不支持并发检验的.有以下两种方式: 方式名称 说明 时间戳注解/行版本 使用Tim ...

  2. oracle数据库修改连接数

    最近在用weblogic部署项目,同时用的是oracle数据库,然后今天遇到一个问题:多个用户连接数据库连接不成功,有时提示被锁住,经检查发现一方面weblogic控制台中数据源的连接池配置没有配置足 ...

  3. JAVA设计模式之【装饰者模式】

    JAVA设计模式之[装饰者模式] 装饰模式 对新房进行装修并没有改变房屋的本质,但它可以让房子变得更漂亮.更温馨.更实用. 在软件设计中,对已有对象(新房)的功能进行扩展(装修). 把通用功能封装在装 ...

  4. 一些琐碎的C/C++知识点

    1. C++ 数组作为函数参数 在C/C++中,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针.(在32位系统中,对任意指针求sizeof结果为4) 2. C++ 中const的用法总结 ...

  5. c语言博客第二次作业

    一.PTA实验作业 题目1:计算分段函数[2] 1.实验代码 { double x,y; scanf("%lf",&x); if(x>=0) { y=pow(x,0. ...

  6. C语言作业(三)

    一.完成PTA上四题作业 二.具体解题 (一).A乘以B 1.实验代码 #include <stdio.h> int main() { int A,B,C; scanf("%d ...

  7. 洛谷P2894 [USACO08FEB]酒店Hotel

    P2894 [USACO08FEB]酒店Hotel https://www.luogu.org/problem/show?pid=2894 题目描述 The cows are journeying n ...

  8. java之多态详解

    前言 什么叫多态?多态就是一种事物可以有多种表现形式 多态三要素 1.被动方必须有继承关系 2.子类一般都要重写父类方法 3.必须将主动方的功能函数的参数设置为 被动方父类的类型 举个例子司机开车 假 ...

  9. ctf变量覆盖漏洞:

    1.变量覆盖: ①:针对extract函数的变量覆盖漏洞: <?php @error_reporting(E_ALL^E_NOTICE); require('config.php'); if($ ...

  10. LeetCode & Q28-Implement strStr-Easy

    String Two Pointers Description: Implement strStr(). Returns the index of the first occurrence of ne ...