•redis的set是string类型的无序集合。
•set元素最大可以包含(2的32次方-1)个元素。
•set的是通过hash table实现的,hash table会随着添加或者删除自动的调整大小
关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐和blog的tag功能。
•sadd key member 添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误
•srem key member 从key对应set中移除给定元素,成功返回1,如果member在集合中不存在或者key不存在返回0,如果key对应的不是set类型的值返回错误
•spop key 删除并返回key对应set中随机的一个元素,如果set是空或者key不存在返回nil
•srandmember key 同spop,随机取set中的一个元素,但是不删除元素
•smove srckey dstkey member 从srckey对应set中移除member并添加到dstkey对应set中,整个操作是原子的。成功返回1,如果member在srckey中不存在返回0,如果key不是set类型返回错误
•scard key 返回set的元素个数,如果set是空或者key不存在返回0
•sismember key member 判断member是否在set中,存在返回1,0表示不存在或者key不存在
•sinter key1 key2...keyN 返回所有给定key的交集
•sinterstore dstkey key1...keyN 同sinter,但是会同时将交集存到dstkey下
•sunion key1 key2...keyN 返回所有给定key的并集
•sunionstore dstkey key1...keyN 同sunion,并同时保存并集到dstkey下
•sdiff key1 key2...keyN 返回所有给定key的差集
•sdiffstore dstkey key1...keyN 同sdiff,并同时保存差集到dstkey下
•smembers key 返回key对应set的所有元素,结果是无序的
Sorted set
•和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个double类型的score。sorted set的实现是skip list和hash table的混合体。当元素被添加到集合中时,一个元素到score的映射被添加到hash table中,另一个score到元素的映射被添加到skip list
并按照score排序,所以就可以有序的获取集合中的元素。
Sorted set 相关命令
•zadd key score member 添加元素到集合,元素在集合中存在则更新对应score
•zrem key member 删除指定元素,1表示成功,如果元素不存在返回0
•zincrby key incr member 增加对应member的score值,然后移动元素并保持skip list有序。返回更新后的score值
•zrank key member 返回指定元素在集合中的排名(下标,非score),集合中元素是按score从小到大排序的
•zrevrank key member 同上,但是集合中元素是按score从大到小排序
•zrange key start end 类似lrange操作从集合中取指定区间的元素。返回的是有序结果
•zrevrange key start end 同上,返回结果是按score逆序的
•zrangebyscore key min max 返回集合中score在给定区间的元素
•zcount key min max 返回集合中score在给定区间的数量
•zcard key 返回集合中元素个数
•zscore key element 返回给定元素对应的score
•zremrangebyrank key min max 删除集合中排名在给定区间的元素
•zremrangebyscore key min max 删除集合中score在给定区间的元素
Hash
•redis hash是一个string类型的field和value的映射表。
•hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
Hash相关命令
•hset key field value 设置hash field为指定值,如果key不存在,则先创建
•hget key field 获取指定的hash field
•hmget key filed1....fieldN 获取全部指定的hash filed
•hmset key filed1 value1 ... filedN valueN 同时设置hash的多个field
•hincrby key field integer 将指定的hash filed 加上给定值
•hexists key field 测试指定field是否存在
•hdel key field 删除指定的hash field
•hlen key 返回指定hash的field数量
•hkeys key 返回hash的所有field
•hvals key 返回hash的所有value
hgetall 返回hash的所有filed和value