转载

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支持的数据类型和使用方法(二)

正文到此结束
Loading...