zoukankan      html  css  js  c++  java
  • 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) "xe5xa5xb3"
    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支持的数据类型和使用方法(二)

  • 相关阅读:
    mysql密码重置
    利用python生成定制二维码
    totnado前后端分离跨域设置
    supervisor详解
    redis持久化常识和配置
    redis数据的备份与恢复
    supervisor下更换源文件报错
    EF5框架封装
    IEnumerable和IEnumerator 详解
    心宽,路自宽
  • 原文地址:https://www.cnblogs.com/qmsu/p/5050097.html
Copyright © 2011-2022 走看看