sadd

将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
假如 key 不存在,则创建一个只包含 member 元素作成员的集合。
当 key 不是集合类型时,返回一个错误。

  1. # 添加单个元素
  2. redis> SADD bbs "discuz.net"
  3. (integer) 1
  4. # 添加重复元素
  5. redis> SADD bbs "discuz.net"
  6. (integer) 0
  7. # 添加多个元素
  8. redis> SADD bbs "tianya.cn" "groups.google.com"
  9. (integer) 2
  10. redis> SMEMBERS bbs
  11. 1) "discuz.net"
  12. 2) "groups.google.com"
  13. 3) "tianya.cn"

sismember

SISMEMBER key member判断 member 元素是否集合 key 的成员。如果 member 元素是集合的成员,返回 1 。 如果 member 元素不是集合的成员,或 key 不存在,返回 0 。

  1. redis> SMEMBERS joe's_movies
  2. 1) "hi, lady"
  3. 2) "Fast Five"
  4. 3) ""
  5. redis> SISMEMBER joe's_movies "bet man"
  6. (integer) 0
  7. redis> SISMEMBER joe's_movies "Fast Five"
  8. (integer) 1

spop

SPOP key移除并返回集合中的一个随机元素

  1. redis> SMEMBERS db
  2. 1) "MySQL"
  3. 2) "MongoDB"
  4. 3) "Redis
  5. redis> SPOP db
  6. "Redis"
  7. redis> SMEMBERS db
  8. 1) "MySQL"
  9. 2) "MongoDB"
  10. redis> SPOP db
  11. "MySQL"
  12. redis> SMEMBERS db
  13. 1) "MongoDB"

srandmember

SRANDMEMBER key [count]如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。

  1. # 添加元素
  2. redis> SADD fruit apple banana cherry
  3. (integer) 3
  4. # 只给定 key 参数,返回一个随机元素
  5. redis> SRANDMEMBER fruit
  6. "cherry"
  7. redis> SRANDMEMBER fruit
  8. "apple"
  9. # 给定 3 为 count 参数,返回 3 个随机元素
  10. # 每个随机元素都不相同
  11. redis> SRANDMEMBER fruit 3
  12. 1) "apple"
  13. 2) "banana"
  14. 3) "cherry"
  15. # 给定 -3 为 count 参数,返回 3 个随机元素
  16. # 元素可能会重复出现多次
  17. redis> SRANDMEMBER fruit -3
  18. 1) "banana"
  19. 2) "cherry"
  20. 3) "apple"
  21. redis> SRANDMEMBER fruit -3
  22. 1) "apple"
  23. 2) "apple"
  24. 3) "cherry"
  25. # 如果 count 是整数,且大于等于集合基数,那么返回整个集合
  26. redis> SRANDMEMBER fruit 10
  27. 1) "apple"
  28. 2) "banana"
  29. 3) "cherry"
  30. # 如果 count 是负数,且 count 的绝对值大于集合的基数
  31. # 那么返回的数组的长度为 count 的绝对值
  32. redis> SRANDMEMBER fruit -10
  33. 1) "banana"
  34. 2) "apple"
  35. 3) "banana"
  36. 4) "cherry"
  37. 5) "apple"
  38. 6) "apple"
  39. 7) "cherry"
  40. 8) "apple"
  41. 9) "apple"
  42. 10) "banana"
  43. # SRANDMEMBER 并不会修改集合内容
  44. redis> SMEMBERS fruit
  45. 1) "apple"
  46. 2) "cherry"
  47. 3) "banana"
  48. # 集合为空时返回 nil 或者空数组
  49. redis> SRANDMEMBER not-exists
  50. (nil)
  51. redis> SRANDMEMBER not-eixsts 10
  52. (empty list or set)

srem

SREM key member [member …]移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。被成功移除的元素的数量,不包括被忽略的元素。

  1. # 测试数据
  2. redis> SMEMBERS languages
  3. 1) "c"
  4. 2) "lisp"
  5. 3) "python"
  6. 4) "ruby"
  7. #移除单个元素
  8. redis> SREM languages ruby
  9. (integer) 1
  10. # 移除不存在元素
  11. redis> SREM languages non-exists-language
  12. (integer) 0
  13. # 移除多个元素
  14. redis> SREM languages lisp python c
  15. (integer) 3
  16. redis> SMEMBERS languages
  17. (empty list or set)

smove

SMOVE source destination member将 member 元素从 source 集合移动到 destination 集合。
SMOVE 是原子性操作。如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
当 source 或 destination 不是集合类型时,返回一个错误。
如果 member 元素被成功移除,返回 1 。 如果 member 元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0

  1. redis> SMEMBERS songs
  2. 1) "Billie Jean"
  3. 2) "Believe Me"
  4. redis> SMEMBERS my_songs
  5. (empty list or set)
  6. redis> SMOVE songs my_songs "Believe Me"
  7. (integer) 1
  8. redis> SMEMBERS songs
  9. 1) "Billie Jean"
  10. redis> SMEMBERS my_songs
  11. 1) "Believe Me"

scard

返回集合 key 中元素的数量

  1. redis> SADD tool pc printer phone
  2. (integer) 3
  3. redis> SCARD tool # 非空集合
  4. (integer) 3
  5. redis> DEL tool
  6. (integer) 1
  7. redis> SCARD tool # 空集合
  8. (integer) 0

smembers

返回集合 key 中的所有成员。不存在的 key 被视为空集合。

  1. # key 不存在或集合为空
  2. redis> EXISTS not_exists_key
  3. (integer) 0
  4. redis> SMEMBERS not_exists_key
  5. (empty list or set)
  6. # 非空集合
  7. redis> SADD language Ruby Python Clojure
  8. (integer) 3
  9. redis> SMEMBERS language
  10. 1) "Python"
  11. 2) "Ruby"
  12. 3) "Clojure"

sinter

返回一个集合的全部成员,该集合是所有给定集合的交集。

  1. redis> SMEMBERS group_1
  2. 1) "LI LEI"
  3. 2) "TOM"
  4. 3) "JACK"
  5. redis> SMEMBERS group_2
  6. 1) "HAN MEIMEI"
  7. 2) "JACK"
  8. redis> SINTER group_1 group_2
  9. 1) "JACK"

sinterstore

这个命令类似于 SINTER key [key …] 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
如果 destination 集合已经存在,则将其覆盖。
destination 可以是 key 本身。

  1. redis> SMEMBERS songs
  2. 1) "good bye joe"
  3. 2) "hello,peter"
  4. redis> SMEMBERS my_songs
  5. 1) "good bye joe"
  6. 2) "falling"
  7. redis> SINTERSTORE song_interset songs my_songs
  8. (integer) 1
  9. redis> SMEMBERS song_interset
  10. 1) "good bye joe"

sunion

返回一个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。

  1. redis> SMEMBERS songs
  2. 1) "Billie Jean"
  3. redis> SMEMBERS my_songs
  4. 1) "Believe Me"
  5. redis> SUNION songs my_songs
  6. 1) "Billie Jean"
  7. 2) "Believe Me"

sunionstore

SUNIONSTORE destination key [key …]这个命令类似于 SUNION key [key …] 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
如果 destination 已经存在,则将其覆盖。destination 可以是 key 本身。

  1. redis> SMEMBERS NoSQL
  2. 1) "MongoDB"
  3. 2) "Redis"
  4. redis> SMEMBERS SQL
  5. 1) "sqlite"
  6. 2) "MySQL"
  7. redis> SUNIONSTORE db NoSQL SQL
  8. (integer) 4
  9. redis> SMEMBERS db
  10. 1) "MySQL"
  11. 2) "sqlite"
  12. 3) "MongoDB"
  13. 4) "Redis"

sdiff

SDIFF key [key …]返回一个集合的全部成员,该集合是所有给定集合之间的差集。

  1. redis> SMEMBERS peter's_movies
  2. 1) "bet man"
  3. 2) "start war"
  4. 3) ""
  5. redis> SMEMBERS joe's_movies
  6. 1) "hi, lady"
  7. 2) "Fast Five"
  8. 3) ""
  9. redis> SDIFF peter's_movies joe's_movies
  10. 1) "bet man"
  11. 2) "start war"

sdiffstore

SDIFFSTORE destination key [key …]这个命令的作用和 SDIFF key [key …] 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。

  1. redis> SMEMBERS joe's_movies
  2. 1) "hi, lady"
  3. 2) "Fast Five"
  4. 3) ""
  5. redis> SMEMBERS peter's_movies
  6. 1) "bet man"
  7. 2) "start war"
  8. 3) ""
  9. redis> SDIFFSTORE joe_diff_peter joe's_movies peter's_movies
  10. (integer) 2
  11. redis> SMEMBERS joe_diff_peter
  12. 1) "hi, lady"
  13. 2) "Fast Five"

redis 入门之集合的更多相关文章

  1. Redis入门(集合)

    集合 Redis的集合是字符串的无序集合.在Redis您可以添加,删除和测试文件是否存在,在成员O(1)的时间复杂度. 例子 redis 127.0.0.1:6379> sadd tutoria ...

  2. redis入门笔记(1)

    redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...

  3. Redis入门指南

    随着互联网业务对性能需求日益强烈,作为Key/Value存储的Redis具有数据类型丰富和性能表现优异的特点.如果能够熟练地驾驭它,不管是把它用做缓存还是存储,对很多大型应用都很多帮助.新浪作为世界上 ...

  4. Redis入门教程:特性及数据类型的操作

    虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍.是一个很不错的Redis入门 ...

  5. 【原】Redis入门教程

    最近在学习Redis,写几篇文章记录一下学习过程:Redis入门教程. 1.Redis基本概念 Redis Redis Keys Redis 基本数据类型 Redis基本操作 遍历操作 Pub-Sub ...

  6. windows下使用redis,Redis入门使用,Redis基础命令

    windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...

  7. Redis入门教程(二)

    推荐阅读: Redis入门教程(一)https://www.cnblogs.com/jichi/p/10285346.html 5. Redis 的数据结构 5.1 Redis 数据结构介绍 redi ...

  8. Mac redis入门

    Mac redis入门 一.Redis简介 Redis是开源的key-value数据库,运行在内存中,但可以把数据持久化存到磁盘.Redis具有极高的性能,也为各种语言提供了丰富的接口,因此有着广泛的 ...

  9. Redis入门指南之三(入门)

    本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...

随机推荐

  1. ajax请求超时解决方案

    设置timeout的时间,通过检测complete时status的值判断请求是否超时,如果超时执行响应的操作. var ajaxTimeoutTest=$.ajax({ url:'',//请求地址 t ...

  2. 微信小程序(1)--新建项目

    这些天看了一下最近特别火的微信小程序,发现和vue大同小异. 新建项目 为方便初学者了解微信小程序的基本代码结构,在创建过程中,如果选择的本地文件夹是个空文件夹,开发者工具会提示,是否需要创建一个 q ...

  3. mysql授予权限

    grant show databases on *.* to 'asg'@'%'; grant select on *.* to 'asg'@'%'; grant show view on *.* t ...

  4. css3 清除浮动

    eg:三个div,父级div下面有两个div分别float:left和float:right <style> .container{width:400px;border:3px soild ...

  5. HIbernate 查询拼接参数

    public List<TrailTestModel> findByEid(List<String> trailids, String eid) { // TODO Auto- ...

  6. ubuntu 开启ftp服务

    一. 检查是否已安装 vsftpd vsftpd -v 二. 安装 vsftpd apt-get install vsftpd 三.  检查是否已安装好 vsftpd vsftpd -v system ...

  7. ci常量

    1. ENVIRONMENT产品的环境,有3种环境,分别是: development开发环境 testing测试环境 production生产环境 2. SELFCI的主入口文件名称 例如我的是: i ...

  8. 英语单词collaboration

    collaboration 来源——github网站 https://guides.github.com/activities/hello-world/ GitHub is the best way ...

  9. 基于oracle 的PL/SQL编程 - 存储过程

    接上篇,游标使用的语句,相当于一段匿名的函数,窗口关闭了就不存在了.如果想要窗口关闭了,还能继续执行那段代码,就需要存储过程了: PLSQL是指一个个PLSQL的业务处理过程存储起来进行复用,这些被存 ...

  10. 10.21 crond定时任务练习

    1.玩crond必须以下任务开启 [root@wen ~]# chkconfig --list crond crond        0:off        1:off        2:on    ...