• 面试基础-redis(一)


    一 数据类型

      redis支持以下5种数据类型:

      1.string(字符串)    基本数据类型,二进制安全,可以包含任何数据(序列号图片等),最大能存在512MB   

      2.hash(哈希)  键值对的集合,适合用于储存对象,每个 hash 可以存储 232 -1 键值对(40多亿)  

      3.list(列表)   简单字符串列表,按照传入顺序排序,可添加元素到头部或尾部,最多储存列表最多可存储232 - 1个元素  

      4.set(集合)     string类型的无需集合,通过哈希表实现的,集合中最大的成员数为 232 - 1个

      5.zset(sorted set 有序集合)  有序set,每个元素关联一个double类型的分数,通过分数排序来实现有序

    应用场景及特性:

      

    命令:

      基本命令:command keyname

           命令 键值key

      del key   :  key存在时删除key

      keys pattern : 查找所有符合给定模式(pattern)的key

      sort key       :    排序

      dump key  :  序列化key,并返回序列化的值

      exists key  :  检查给定key是否存在

      expire key seconds:  为给定key设置过期时间,以秒计

      expireat key timestamp : 为给定key设置过期时间,以timestamp类型计

      pexpire key milliseconds : 为给定key设置过期时间,以毫秒计

      move key  db : 将当期数据库的key移动到给定的数据库db中

      persist key : 移除key的过期时间,key将持久保持

      pttl key :以毫秒为单位返回key的剩余过期时间

      ttl key : 以秒为单位返回key的剩余过期时间

      pandomkey : 从当期数据库随机返回一个key

      rename key newkeyname : 修改key的名称

      renamenx key newkeyname : 当newkeyname不存在时

      type key : 返回key所存储的数据类型

    • SCAN 命令用于迭代当前数据库中的数据库键。
    • SSCAN 命令用于迭代集合键中的元素。
    • HSCAN 命令用于迭代哈希键中的键值对。
    • ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

    以上列出的四个命令都支持增量式迭代, 它们每次执行都只会返回少量元素, 所以这些命令可以用于生产环境, 而不会出现像 KEYS 命令、 SMEMBERS 命令带来的问题 —— 当 KEYS 命令被用于处理一个大的数据库时, 又或者 SMEMBERS 命令被用于处理一个大的集合键时, 它们可能会阻塞服务器达数秒之久。

    SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。

    当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。

    以下是一个 SCAN 命令的迭代过程示例:

    redis 127.0.0.1:6379> scan 0
    1) "17"
    2)  1) "key:12"
        2) "key:8"
        3) "key:4"
        4) "key:14"
        5) "key:16"
        6) "key:17"
        7) "key:15"
        8) "key:10"
        9) "key:3"
        10) "key:7"
        11) "key:1"
    
    redis 127.0.0.1:6379> scan 17
    1) "0"
    2) 1) "key:5"
       2) "key:18"
       3) "key:0"
       4) "key:2"
       5) "key:19"
       6) "key:13"
       7) "key:6"
       8) "key:9"
       9) "key:11"

    在上面这个例子中, 第一次迭代使用 0 作为游标, 表示开始一次新的迭代。

    第二次迭代使用的是第一次迭代时返回的游标, 也即是命令回复第一个元素的值 —— 17 。

    从上面的示例可以看到, SCAN 命令的回复是一个包含两个元素的数组, 第一个数组元素是用于进行下一次迭代的新游标, 而第二个数组元素则是一个数组, 这个数组中包含了所有被迭代的元素。

    在第二次调用 SCAN 命令时, 命令返回了游标 0 , 这表示迭代已经结束, 整个数据集(collection)已经被完整遍历过了。

    String 命令:

     Hash命令:

    List命令 :

     Set集合:

     Sorted set :

      

  • 相关阅读:
    洛谷P1170 兔八哥与猎人 欧拉函数的应用
    洛谷P1056 排座椅
    洛谷P1177 【模板】快速排序
    洛谷1059 明明的随机数
    洛谷P1372 又是毕业季I
    洛谷P1042 乒乓球
    洛谷P1086 花生采摘
    洛谷P1031 均分纸牌
    洛谷P1068 分数线划定
    洛谷P1781 宇宙总统
  • 原文地址:https://www.cnblogs.com/lensener/p/10495895.html
Copyright © 2020-2023  润新知