zoukankan      html  css  js  c++  java
  • Redis学习笔记(五)- 数据类型之set类型

      Redis 的set是string类型的无序集合。set元素最大可以包含(2的32次方-1)个元素。set的是通过hash table实现的,所以添加,删除,查找的复杂度都是O(1)。hash table会随着添加或者删除自动的调整大小。需要注意的是调整hash table大小时候需要同步(获取写锁)会阻塞其他读写操作。可能不久后就会改用跳表(skip list)来实现,跳表已经在sorted set中使用了。关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐和blog的tag功能。

      set相关命令:

      sadd key member 添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0

      scard key 返回set的元素个数,如果set是空或者key不存在返回0

      smembers key 返回key对应set的所有元素,结果是无序的

      sismember key member 判断member是否在set中,存在返回1,0表示不存在或者key不存在

      srandmember key 同spop,随机取set中的一个元素,但是不删除元素

      

      spop key 删除并返回key对应set中随机的一个元素,如果set是空或者key不存在返回nil

      srem key member 从key对应set中移除给定元素,成功返回1,如果member在集合中不存在或者key不存在返回0

      

      smove srckey dstkey member 从srckey对应set中移除member并添加到dstkey对应set中,整个操作是原子的。成功返回1,如果member在srckey中不存在返回0,如果key不是set类型返回错误

      

      

  • 相关阅读:
    CF580B Kefa and Company 尺取法
    [USACO08OCT]牧场散步Pasture Walking BZOJ1602 LCA
    [USACO09FEB]改造路Revamping Trails 分层最短路 Dijkstra BZOJ 1579
    [USACO09OPEN]牛的数字游戏Cow Digit Game 博弈
    Codeforces 628F 最大流转最小割
    Codeforces 513D2 Constrained Tree
    Codeforces 1009G Allowed Letters 最大流转最小割 sosdp
    Codeforces 431E Chemistry Experiment 线段树 + 二分
    Codeforces 359E Neatness
    Codeforces 1045B Space Isaac
  • 原文地址:https://www.cnblogs.com/leny/p/5672001.html
Copyright © 2011-2022 走看看