Redis系列二:Redis支持的数据类型和使用方法(二)

四、sorted set类型
sorted set(有序集合)和set(无序集合)都是String类型元素的集合
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

Redis系列二:Redis支持的数据类型和使用方法(一)

Redis系列二:Redis支持的数据类型和使用方法(二)

posted @ 2015-12-16 20:06  qmsu  阅读(1241)  评论(0编辑  收藏  举报