127.0.0.1:6379> zadd sorted_set_key 1 a #添加元素a,元素在集合中存在则更新 (integer) 1 127.0.0.1:6379> 127.0.0.1:6379> zadd sorted_set_key 2 b (integer) 1 127.0.0.1:6379> zadd sorted_set_key 3 c (integer) 1 127.0.0.1:6379> zrange sorted_set_key 0 2 #从集合中取出指定区间的元素 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> zadd sorted_set_key 1 aa (integer) 1 127.0.0.1:6379> zrange sorted_set_key 0 2 1) "a" 2) "aa" 3) "b" 127.0.0.1:6379> zrem sorted_set_key aa #删除集合中指定的元素aa (integer) 1 127.0.0.1:6379> zrange sorted_set_key 0 2 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> zrem sorted_set_key b (integer) 1 127.0.0.1:6379> zrange sorted_set_key 0 2 1) "a" 2) "c" 127.0.0.1:6379>
其他命令
zincrby key incr member:增加对应的member的score值,并且重新排序,返回更新后的score值
zrank key member:返回名称为key的zset中member元素的排名(按score从小到大排序)即下标
zrevrank key member:返回名称为key的zset中member元素的排名(按score从大到小排序)即下标
zrevrange key member:返回名称为key的zset(按score从大到小排序)中的index从start到end的所有元素
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类型
Hash类型是每一个key对应一个HashTable,添加、删除和修改的时间复杂度都是O(1)。Hash类型适合用于存储对象,如存储用户信息,把用户ID作为Key,可以把用户信息保存到Hash类型中。
当新建一个Hash类型对象时,为了节省内存,Redis使用zipmap存储数据。这个zipmap其实并不是hash table,但是zipmap相比正常的hash实现可以节省不少hash本身需要的一些元数据存储开销。尽管zipmap的添加,删除,查找都是O(n),但是由于一般对象的field数量都不太多。所以使用zipmap也是很快的,也就是说添加删除平均还是O(1)。如果field或者value的大小超出一定限制后,Redis会在内部自动将zipmap替换成正常的hash实现. 这个限制可以在配置文件中指定:hash-max-zipmap-entries 64 (设置字段最多64个)和hash-max-zipmap-value 512 (设置value最大为512字节)。
127.0.0.1:6379> hset hash_key name lili #设置hashfield为指定值,如果key不存在,则先创建 (integer) 1 127.0.0.1:6379> hset hash_key age 11 (integer) 1 127.0.0.1:6379> hset hash_key sex "女" (integer) 1 127.0.0.1:6379> hget hash_key name #获取指定的hash field "lili" 127.0.0.1:6379> hkeys hash_key #返回hash的所有field 1) "name" 2) "age" 3) "sex" 127.0.0.1:6379> hvals hash_key #返回hash的所有value 1) "lili" 2) "11" 3) "\xe5\xa5\xb3" 127.0.0.1:6379> hexists hash_key name #测试指定field是否存在 (integer) 1 127.0.0.1:6379> hexists hash_key name2 (integer) 0 127.0.0.1:6379>
其他命令
hmset key field1 ... fieldN:同时设置hash的多个field。
hmget key field1 ... fieldN:获取全部指定的hash filed
hincrby key field integer:指定的hash filed加上给定值integer。
hlen key:返回指定hash的field数量。
hdel key field:返回指定hash的field数量。
hgetall key:获取某个hash中全部的filed及value。
Redis系列二:Redis支持的数据类型和使用方法(二)