2020.6.1 Redis Day2

发布于 2020-06-01  44 次阅读


1.复习内容

2.灵感代办

3.学习内容

  • Redis 位图操作bitmap

    • 对二进制位进行操作
    • 使用:
      • # 设置某一位上的值(offset是偏移量,从0开始)
        
        setbit key offset value
        
        # 获取某一位上的值
        
        GETBIT key offset
        
        # 统计键所对应的值中有多少个 1
        
        BITCOUNT key
        
        # 比如user001 上线第2天
        
        SETBIT user001 2 1

    • 应用场景
      • 网站用户的上线次数统计(寻找活跃用户)
      • 表示一年签到次数,
      • 极大的节省了空间
  • Hash散列数据类型

    • 定义
      • 有一个key,后面是field和value组成
      • field和value都是字符串类型
      • hash中可以包含2的32次方-1个键值对
      • 对hash的操作一般都是对field和value
    • 优点:
      • 因为只有一个key,比多个key节约了很多空间
      • key越多,redis月耗费计算机资源(内存,计算)
    • 缺点:
      • hash不能使用位图操作 bitmap
      • hash中的field不能使用过期操作
    • 基本命令
      • # 1、设置单个字段
        
        HSET key field value
        HSETNX key field value
        
        # 2、设置多个字段
        
        HMSET key field value field value
        
        # 3、返回字段个数
        
        HLEN key
        
        # 4、判断字段是否存在(不存在返回0)
        
        HEXISTS key field
        
        # 5、返回字段值
        
        HGET key field
        
        # 6、返回多个字段值
        
        HMGET key field filed
        
        # 7、返回所有的键值对
        
        HGETALL key
        
        # 8、返回所有字段名
        
        HKEYS key
        
        # 9、返回所有值
        
        HVALS key
        
        # 10、删除指定字段
        
        HDEL key field
        
        # 11、在字段对应值上进行整数增量运算
        
        HINCRBY key filed increment
        
        # 12、在字段对应值上进行浮点数增量运算
        
        HINCRBYFLOAT key field increment

    • 应用场景 mysql + redis hash组合使用
      • 使用流程:
        • 1,判断在redis中是否存在key,存在则直接取出
        • 2.如果不存在,从数据库中取出,放入redis
        • 3.对数据更新操作之后,也要将redis中的数据更新
  • 集合数据类型 set

    • 特点:
      • 无序,去重
    • 注意事项:
      • 1.集合中添加元素是 sadd,可以添加多个
      • 2.集合中查看是用 smembers
      • 3.查看元素是否存在 sismember
      • 4.判断集合长度是 scard
      • 5.移动集合元素到另一个集合 smove
      • 6.差集diff 并集union 交集inter 都有两个方法,其中一个是store 可以将结果保存在一个新集合里面
    • 基本命令
      • # 1、增加一个或者多个元素,自动去重
        
        # 2、查看集合中所有元素
        
        # 3、删除一个或者多个元素,元素不存在自动忽略
        
        # 4、元素是否存在
        
        # 5、随机返回集合中指定个数的元素,默认为1个
        
        # 6、返回集合中元素的个数,不会遍历整个集合,只是存储在键当中了
        
        # 7、把元素从源集合移动到目标集合
        
        # 8、差集(number1 1 2 3 number2 1 2 4)
        
        # 9、差集保存到另一个集合中
        
        # 10、交集
        
        # 11、并集
        
        # 1、增加一个或者多个元素,自动去重
        
        SADD key member1 member2
        
        # 2、查看集合中所有元素
        
        SMEMBERS key
        
        # 3、删除一个或者多个元素,元素不存在自动忽略
        
        SREM key member1 member2
        
        # 4、元素是否存在
        
        SISMEMBER key member
        
        # 5、随机返回集合中指定个数的元素,默认为1个
        
        SRANDOMMEMBER key count
        
        # 6、返回集合中元素的个数,不会遍历整个集合,只是存储在键当中了
        
        SCARD key
        
        # 7、把元素从源集合移动到目标集合
        
        SMOVE source destination member
        
        # 8、差集(number1 1 2 3 number2 1 2 4)
        
        SDIFF key1 key2
        
        # 9、差集保存到另一个集合中
        
        SDIFFSTORE destination key1 key2
        
        # 10、交集
        
        SINTER key1 key2
        SINTERSTORE destination key1 key2
        
        # 11、并集
        
        SUNION key1 key2
        SUNIONSTORE destination key1 key2

    • 使用场景:
      • 爬虫中的url重复元素
      • QQ中的共同好友,使用集合就可以
  • 有序集合 sortedset

    • 特点:
      • 有序,去重
      • 将每一个元素关联到一个浮点数上(score),然后按照从小到大排序显示(分值可以相同)
    • 例子
      • 分值 2.0 4.0 6.0 8.0 10.0
        元素 西瓜 葡萄 芒果 香蕉 苹果
    • 基本命令
      • # 在有序集合中添加一个成员
        
        # 查看指定区间元素(升序)
        
        # 查看指定区间元素(降序)
        
        # 查看指定元素的分值
        
        # 返回指定区间元素
        
        # offset : 跳过多少个元素
        
        # count : 返回几个
        
        # 小括号 : 开区间  zrangebyscore fruits (2.0 8.0
        
        # 删除成员
        
        # 增加或者减少分值
        
        # 返回元素排名
        
        # 返回元素逆序排名
        
        # 删除指定区间内的元素
        
        # 返回集合中元素个数
        
        # 返回指定范围中元素的个数
        
        # 并集
        
        # 交集:和并集类似,只取相同的元素
        
        # 在有序集合中添加一个成员
        
        zadd key score member
        
        # 查看指定区间元素(升序)
        
        zrange key start stop [withscores]
        
        # 查看指定区间元素(降序)
        
        ZREVRANGE key start stop [withscores]
        
        # 查看指定元素的分值
        
        ZSCORE key member
        
        # 返回指定区间元素
        
        # offset : 跳过多少个元素
        
        # count : 返回几个
        
        # 小括号 : 开区间  zrangebyscore fruits (2.0 8.0
        
        zrangebyscore key min max [withscores] [limit offset count]
        
        # 删除成员
        
        zrem key member
        
        # 增加或者减少分值
        
        zincrby key increment member
        
        # 返回元素排名
        
        zrank key member
        
        # 返回元素逆序排名
        
        zrevrank key member
        
        # 删除指定区间内的元素
        
        zremrangebyscore key min max
        
        # 返回集合中元素个数
        
        zcard key
        
        # 返回指定范围中元素的个数
        
        zcount key min max
        zcount fruits 4 7
        zcount fruits (4 7
        
        # 并集
        
        zunionstore destination numkeys key [weights 权重值] [AGGREGATE SUM|MIN|MAX]
        
        # 交集:和并集类似,只取相同的元素
        
        ZINTERSTORE destination numkeys key1 key2 WEIGHTS weight AGGREGATE SUM|MIN|MAX
        

4.扩展延伸知识

  • 单位

    • 1MB = 1024KB
    • 1KB = 1024Byte(字节)
    • 1Byte = 8bit(位)
  • redis –raw
  • redis中的哈希,都是操作
    • field和value
  • python中切片的选择
    • 包括左边,不包括右边

5.知识内容个人梳理

6.今天都复习了之前的什么内容


Ares个人进阶之路