zoukankan      html  css  js  c++  java
  • Redis数据类型(下)

    集合Set 

     
    Redis 的集合不是 个线性结构,而是一个哈希表结构,它的内部会根据 hash 分子
    存储和查找数据,理论上 个集合可以存储 232 (大约 42 亿)个元素,因为采用哈希表结
    构,所以对于 Redis 集合的插入、删除和查找的复杂度都是 0(1 ),只是我们需要注意:
     
    1.对于集合而言,它的每 个元素都是不能重复的,当插入相同记录的时候都会失败
    2.集合是无序的。
    3.集合的每 个元素都是 String 数据结构类型。
     
    Red is 的集合可以对于不同的集合进行操作,比如求出两个或者以上集合的交集、 差集和并集等。

     

    sadd/smembers/sismember

    sadd key number [member2 .....]  给键为key的集合增加成员,可增加多个
    smembers key  返回集合所有成员
    sismember  key member  判断member是否是key集合的成员

     

     scard,获取集合里面的元素个数
        获取集合里面的元素个数
    scard key
    srem key value 删除集合中元素
    srem key member [ member2 .... ]
    移除集合中 元素,可以是多个元素

     

     srandmember key 某个整数(随机出几个数)
     *   从set集合里面随机取出2个
     *   如果超过最大数量就全部取出,
     *   如果写的值是负数,比如-3 ,表示需要取出3个,但是可能会有重复值。
    srandmember key [count]
    count为随机出数的个数,默认为1,为负数则取绝对值

     

    spop key 随机出栈
    随机弹 集合的一个元素
    注意其随机性 因为集合是无序的

     

    smove key1 key2 在key1里某个值      作用是将key1里的某个值赋给key2
    smove src des member
    将成员 member 从集合 src 迁移到集合 des
    原来集合的值可以说已经没有了,直接去了另一个集合,另一个集合可以存在,不存在则创建

     

    差集:sdiff
    交集:sinter
    并集:sunion
     
    sdiff key I [key2]   找出两个综合的差集                参数如果是单 key ,那么 Red is 就返回这key 的所有元素
    sinter key I [key2]  key key2 两个集合的交集。    参数如果是单 key ,那么 Red is 就返回这key 的所有元素
    sunion key l [key2]     求两 集合 并集                   参数如果是单 key ,那么 Red is 就返回这key 的所有元素

     

    Hash哈希
    Redis 中哈希结构就如同 Java map 一样 个对象里面有许多键值对,它是特别
    合存储对象的 ,如果内存足够大,那么 Redis hash 结构可以存储 232_ 键值对 40
    多亿)。 般而言 不会使用到那么大的一个键值对,所以我们认为 Redis 可以存储很多的
    键值对。在 Redis 中, hash 是一个 String 类型的 field value 映射表,因此我们存储的
    数据实际在 Redis内存中的一个字符串
     
    hash 的键值对在内存中是一种无序的状态
    KV模式不变,但V是一个键值对
     
     
    hset/hget/hmset/hmget/hgetall/hdel
    hset key file value:设置键值对  单个
    hget :获取属性值  单个
     
    hmset key field1 value1 [filed2 value2...]  设置键值对, 多个
    hmget:获取多个hash指定键的值   多个
     

    hgetall:获取所有hash结构中的值

     

    hdel:删除hash中的某些字段

     

     hlen返回key中的数量

     

     hexists key 在key里面的某个值的key

     
    hkeys/hvals
    hkeys:获取所有的键
    hvals:获取所有的值
     
    hincrby/hincrbyfloat
    hincrby key field incremen:指定给 hash 结构中的某 字段加上 个整,要求该字段也是整数字符串
    hincrbyfloat key field increment:指定给 hash 结构中的某 字段加上 个浮点数,要求该字段也是整数字符串
     
     hsetnx:不存在赋值,存在了无效。
    hsetnx key field value
     
     
     
    有序集合:
    只是说它是有序的
    和无序集合的主要区别在于每 个元素除了值之外,它还会多一个分数
    分数是一个浮点数,在 Java 中是使用双精度表示的
     
    Redis 就可以支持对分数从小到大或者从大到小的排序。这里和无序集合一样,对于
    每一个元素都是唯一的 ,但是对于不同元素而 ,它的分数可以一样。

     

    有序集合是依赖 key 标示它是属于哪个集合,依赖分数进行排序,所以值和分数是必须的

     

     zadd/zrange
    zadd key score value(value1) 【score2 value2 ...] :增加一个或多个成员,key不存在则创建有序集合

     

     zrangebyscore key 开始score 结束score

     

    zrem key 某score下对应的value值,作用是删除元素
     
    zcard/zcount key score区间/zrank key values值,作用是获得下标值/zscore key 对应值,获得分数
    zcard:统计个数
    zcount key score: zcount key min max        根据分数返回对应的成员列表
    zrank key values:

    zrevrank key values值,作用是逆序获得下标值

     

     zrevrange  从大到小的按分数排序
    zrevrange key start end
    zrevrangebyscore  key 结束score 开始score
    从大到小的按分数排序
    zrevrangebyscore key max min [withscores

     

  • 相关阅读:
    MySQL >>> 存储引擎
    MySQL >>> 基本操作语句
    MySQL >>> 使用安装
    协程 *单线程实现并发
    进程池 & 线程池
    线程 *知识点扩充
    进程 & 线程
    DRF单表序列化
    DRF
    接口规范
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10049236.html
Copyright © 2011-2022 走看看