bei 发表于 2018-11-2 11:26:04

redis之sets类型及操作

  sets类型及操作
  set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作,操作中key理解为集合的名字。
  set的是通过hash table实现(即set并没有顺序)的,所以添加、删除和查找的复杂度都是O(1)。hash table会随着添加或者删除自动的调整大小。需要注意的是调整hash table大小时候需要同步(获取写锁)会阻塞其他读写操作,可能不久后就会改用跳表(skip list)来实现,跳表已经在sorted set中使用了。关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐和blog的tag功能。
  sadd
  向集合set中添加指定元素.
  如:sadd myset "hello"
  srem
  删除set中的指定元素
  如:srem myset “hello”
  spop
  随机删除set中元素并返回此数据
  sdiff
  返回set1在set2中没有的元素.
  如:sdiff set1 set2
  sdiffstore
  返回set1在set2中没有的元素,并存储到另一个set中.
  如:sdiff set1 set2 set3
  smembers
  查看Set元素
  如:smembers set1
  sinter
  返回指定的set(多个)的交集
  如:sinter set1 set2 set3
  sinterstore
  返回指定的set(多个)的交集并保存为另一个set。
  sunion
  返回所有给定set的并集
  如:sunion set1 set2 set3
  sunionstore
  返回所有给定set的并集,并存储为另一个set
  smove
  从第一个set中移除member并添加到第二个对应set中
  如:smove myset2 myset7 member
  scard
  返回set的元素个数
  sismember
  测试member是否是set的元素
  srandmember
  随机返回set的一个元素,但是不删除元素

页: [1]
查看完整版本: redis之sets类型及操作