hash(哈希表)
hash的实现有两种ziplist或者hashtable
增加
HSET key field value 设置key中的某个字段 时间复杂度:O(1)
HMSET key field value [field value ...] 同时设置多个字段 时间复杂度:O(N), N
为 field-value
对的数量。
HSETNX key field value 如果key中的域不存在,则设置,如果域已经存在了,什么也不做。
查询
HGET key field 返回key中对应域的值, 时间复杂度:O(1)
HMGET key field [field ...] 同时返回key中的多个域的值 时间复杂度:O(N), N
为给定域的数量。
HGETALL key 返回哈希表 key
中,所有的域和值。时间复杂度:O(N), N
为哈希表的大小。
HLEN key 返回哈希key中域的数量
HVALS key 返回key中所有域的值
HKEYS key 返回哈希表所有的key 时间复杂度:O(N), N
为哈希表的大小。
HSTRLEN key field 返回哈希表中,给定域关联的值的字符串的长度。
HEXISTS key field 返回给定的域是否存在,时间复杂度:O(1)
删除
HDEL key field [field ...] 删除key中对应域的值。 时间复杂度 O(n),N为删除的域的数量
修改
HINCRBY key field increment 对某个域进行 增量操作,如果value不是整数,操作失败。
HINCRBYFLOAT key field increment 对某个域进行 增量操作, 如果value不能转化为浮点数,失败。
集合
集合的实现,如果是整数集合,使用intset来实现,如果集合中存放的是字符串,用hashtable实现。
添加
SADD key member [member ...] 时间复杂度 O(n)
查看全部成员
SMEMBERS key 返回key中所有成员,时间复杂度O(n)
SISMEMBER key member 判断元素是否是集合的成员 ,存在返回1,不存在返回0, 时间复杂度O(1)
集合长度
SCARD key 返回集合中,元素数量 时间复杂度O(1)
集合运算
SDIFF key key2 返回两个集合的差集 ,返回key中有,但是key2中没有的 元素。 时间复杂度O(n)
SINTER key key2 返回两个集合的交集。 时间复杂度O(m*n)
SUNION key key2 返回两个集合的并集,时间复杂度O(n)
元素移动
SMOVE source destination member 将元素从 source 中移动到 destination, 时间复杂度O(1),原子操作
随机取出
SPOP key 随机删除并返回集合中的一个元素, 时间复杂度O(1)
随机查看
SRANDMEMBER key [count] 随机返回集合中的一个元素 时间复杂度O(1)
删除
SREM key member 移除集合中的指定元素。 时间复杂度O(n) n是指定元素的数量
SSCAN 用于遍历超大量元素的集合。
有序集合
有序集合的实现:使用skiplist或者 ziplist实现。
增加/修改
zadd key score number 时间复杂度 log n
删除成员
zrem key number 删除key中的number成员, 时间复杂度 log n
ZREMRANGEBYRANK key start stop 删除成员 ,删除排名在 [start,stop]之间的元素 时间复杂度 log n
ZREMRANGEBYSCORE key min max 删除成员,删除分数在[min,max]之间的元素 时间复杂度 log n
统计数量
zcard key 返回有序集的基数, 时间复杂度 O(1)
zcount key min max 返回分值在 [min, max] 之间的元素数量 时间复杂度 log n
返回成员
zrange key start stop 返回指定区间内的成员,score从小到大, 时间复杂度 log n
ZREVRANGE key start stop [WITHSCORES] 返回指定区间内的成员,按照score 从大到小 时间复杂度 log n
ZRANGEBYSCORE exe min max withscores 返回分数在[min,max]之间的元素, 时间复杂度 log n
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 按照分数倒序,返回成员
返回成员排名
zrank key number 返回成员number的排名, 时间复杂度 O(log n)
ZREVRANK key member
返回成员分数
ZSCORE key member 返回集合中,成员number的score分值 时间复杂度O(1)
zscan key 用来遍历整个key的元素,不会造成阻塞,适用于成员数量巨大的情况。