首页 文章详情

《面试1v1》Redis基础 - 修正版

JavaPub | 179 2024-04-29 17:39 0 0 0
UniSMS (合一短信)

往期干货笔记整理


本篇是之前的修订版本,修改之前的错误《粉丝给我提 bug 了》

我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。

面试官:来吧,聊聊 Redis,这个 NoSQL 数据库你用过吧?

候选人: 用过用过, Redis 是我最喜欢的 NoSQL 数据库,性能超高,用起来特顺手。

面试官:那你说说Redis有什么优点?

候选人: Redis的优点很多:

  1. 速度快,是基于内存的数据库,CPU 不是性能瓶颈,读的速度是 110000次/s,写的速度是 81000次/s 。
  2. 支持丰富数据类型,不仅仅是 String, 还有 List,Set,Sorted Set,Hash 等等。
  3. 持久化,可以将内存中的数据写入磁盘,确保数据的持久性。
  4. 简单易用, Redis 只需要6个命令就可以满足基本所有需求,非常易于学习和使用。
  5. 高可用, Redis 官方提供了 Sentinel 和 Cluster 两种方案,很容易实现高可用。(哨兵和集群)

面试官:说的不错,我再问你几个 Redis 的基本命令,来测试一下你的熟练程度。set key value ,这条命令的作用是?

候选人: set key value 这个命令的作用是给指定的 key 设置字符串值 value。如果key已经存在,则覆盖原来的值。

例如:

          
          set name "john"

面试官:get key这个命令呢?

候选人: get key这个命令用来获取指定key的值。例如:

          
          get name   # "john"

面试官:那setex key seconds value呢?这个命令有什么作用?

候选人: setex key seconds value 这个命令用于设置 key 的值为 value,并且设置这个键值对的过期时间为seconds秒。

例如:

          
          setex name 30 "jack" # 设置name的值为"jack",30秒后过期
get name   # "jack"
# 30秒后
get name   # nil,键值对已经过期

面试官:setnx key value又是什么作用?

候选人: setnx key value 这个命令只在键 key 不存在时,将其值设置为 value。如果键 key 已经存在,则不做任何操作。这是 "SET if Not eXists" 的简写。

例如:

          
          set name "john"
setnx name "jack" # 不做任何操作,name的值保持为"john"
setnx age 30      # 设置age值为30,因为age键原来不存在

bbc638ea98c58b1181a10504b305be09.webp

最近我在更新《面试1v1》系列文章,主要以场景化的方式,讲解我们在面试中遇到的问题,致力于让每一位工程师拿到自己心仪的offer,感兴趣可以关注公众号JavaPub追更!

《面试1v1》 连载中...

    
      
  

往期干货笔记整理

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter