面试基础-redis

Posted lensener

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试基础-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 :

  

 

以上是关于面试基础-redis的主要内容,如果未能解决你的问题,请参考以下文章

Java面试-吊打面试官系列 Redis基础

面试基础-redis

《吊打面试官》系列-Redis基础

Redis学习---面试基础知识点总结

面试者推荐 |Redis面试专题「常见问答系列」透析Redis常见技术相关的问题1~10题(基础)

面试常用的代码片段