首页 > 数据库 >redis的面试

redis的面试

时间:2022-09-07 21:14:28浏览次数:57  
标签:缓存 name -- redis praise 面试 key zhangsan

Redis的数据类型

String

1.set name zhangsan

2.get name

3.setex name 5 zhangsan --设置时间为5秒

4.getset name zhangsan --给name设置值为张三,并且返回原来的值

5.setnx name zhangsan --只有name不存在时,设置zhangsan ,否则不设置

6.incr age --给age 的值加一,如果age不是数字类型,那么就报错

7.decr age

hash

(用于封装一个对象的,比如说淘宝购物车)

1.hset shoppingCart name phone

2.hget shoppingCart name

3.hmset shoppingCart name phone price 1000 color red

--同时设置大key中的多个小key

4.hmget shoppingCart name price color

-- 同时获取大key中多个小key的值

5.hkeys shoppingCart --获取所有小key

6.hvals shoppingCart --获取所有小key对应的值

7.hgetall shoppingCart --获取所有键值对

8.hexists shoppingCart name --判断小key是否存在

list

用再消息队列,心跳包,

1.lpush heart 4 3 2 1

2.rpush heart 1 2 3 4

3.lrange heart 2 3 -- 获取第二个到第三个的元素

4.llen heart -- 获取列表长度

5.rpop heart --右右右弹出并获取最后一个元素

6.brpop heart 10--移除并且获取最后一个元素,如果列表没有元素,元素会等待10秒,10秒内如果有元素进来,那么就弹出

7.lindex heart 2 -- 获取第2个索引上的值

8.lrem heart 2 1 --移除heart上第2个开始往后1个的元素

set

(微信的朋友圈点赞)praise 是点赞 comment是评论

1.sadd praise zhangsan lisi wangwu ---向集合添加多个成员

2.smembers praise---- 返回集合的所有元素

3.scard praise----- 返回集合的成员数

4.sinter praise comment返回所有集合的交集

5.sunion praise comment返回所有集合额并集

6.sdiff zhangsan lisi 返回所有集合的差集

7.sismember praise zhangsan 判断zhangsan 有没有在praise中

8.spop praise --- 随机弹出一个元素

9.srem praise zhangsan lisi--- 移除集合中一个或者多个元素

zset

lol战力榜

zadd lol 100 zhangsan 200 lisi 300 wangwu --往集合中添加一个或者多个成员,或者更新已经存在的分数

zrange lol 50 350 [withscores] --表示50到350的从低到高排序,加上withscores表示一起返回列名

zreverange lol 50 350 [withscores] --表示50到350的从高到排序,加上withscores表示一起返回列名

zincrby lol 20 zhangsan --- 给zhangsan 加20分

zrem lol zhangsan lisi ---- 移除集合中的成员

淘汰策略

 

 

 

 

1.会立刻删除过期的key吗

不会立刻删除,因为删除key时肯定时主服务来删除,所以当他在执行删除指令的时候,他就无法进行其他操作,立刻删除会影响性能

2.redis的删除机制

主动删除

redis获取一个key值,先判断这个key是否过期,如果过期,则执行删除操作

惰性删除

redis在后台会开启一个定时任务,定时去更具指定的淘汰策略来删除key

redis中的问题

缓存穿透

人为攻击行为,查询一个数据库中没有,缓存中也没有的数据,如果一直查询该数据,就会直接穿透缓存,到达数据库,可以会导致数据库宕机

解决方案

1.直接给假数据

2.布隆过滤器

缓存击穿

缓存中某一个热点数据的key突然过期,造成大量的请求无法从缓存中获取数据,而直达数据库

解决方案

1.热点数据永远不过期

2.限流(在单位时间内,允许多少个请求来访问数据)

3.降级(缓存降级是指当访问量剧增,即使是有损部分其他服务,仍然需要保证主服务可用,可以将其他次要访问的数据进行缓存降级,从而提升主服务的稳定性)

缓存雪崩

缓存中大量的key在同一时间过期,造成大量的请求无法从缓存中获取数据,而直达数据库。感觉就像出现了雪崩

解决方案

1.热点数据永不过期

2.不同的key随机生存时间

Redis是单线程的吗?

  1. 对于IO读写在6.0版本之前是单线程的,在6.0版本之后是多线程的

  2. 对于Redis的读写指令是单线程的

  3. 对于Redis在执行一些数据备份、淘汰key这些机制是多线程的

Redis在处理数据读写方面是单线程的?为什么还那么快?

1.基于内存操作

2.因为是单线程,所以没有线程切换带来的开销

3.redis的nio多路复用

单节点存在的问题

数据安全

Redis宕机,数据就丢失了【因为数据默认存储介质是内存】

读写瓶颈

读11 w/s 写8w /s

故障转移

为了保证服务器具备写的功能,就需要做主从选举

存储瓶颈

单节点存储的数据是有限的

数据持久化

RDB 方式

是将 redis 某一时刻的数据持久化到磁盘中,是一种快照式的持久化方法,(数据存储在查看dump.rdb中)

AOF 方式

是将执行过的写指令记录下来,在数据恢复时按照从前到后的顺序再将指令都执行一遍

 

 

 

标签:缓存,name,--,redis,praise,面试,key,zhangsan
From: https://www.cnblogs.com/linxiaofeng/p/16667257.html

相关文章

  • 面试突击81:什么是跨域问题?如何解决?
    跨域问题指的是不同站点之间,使用ajax无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。但这个保护机制也带......
  • 面试问题整理
    项目相关项目中用到的C++技术栈1.vector扩容机制(扩容用到的STL器件?没答出来)两倍扩容问题:为什么呈倍数扩容(时间复杂度更优)对于n次插入操作,采用成倍方式扩容可......
  • 用 Redis 做一个可靠的延迟队列
    我们先看看以下业务场景:当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存?新创建店铺,N天内没有上传商品,系统如何知道该信息,并发送激活短信?上述场景最简单直接的......
  • Hive重要知识点及面试题
    知识点:Hive是数据仓库建模工具之一。传统的关系数据库具有结构化程度高、独立性强、冗余度低,主要是操作型数据库和分析型数据库。其中操作型数据库:主要用于业务支撑。一......
  • 分页查询,redis缓存分页数据,redis双重检测
    StringpageKey=RedisKeyManagement.getKey(RedisKeyManagement.ACTIVITY_BAISHI_PAGE_CACHE,Arrays.asList(activityId.toString(),String.valueOf(current)));......
  • 肖sir ___海康面试题
    1、一个框为必填项     不输入的时候 可以点击提交        是前端bug 还是后端bug   2、前端做了校验 ,怎么判断后端有没有做校验3、一个字段校验不能......
  • 【金九银十必问面试题】站在架构师角度分析问题,如何解决TCC中的悬挂问题
    “如何解决TCC中的悬挂问题”!一个工作了4年的Java程序员,去京东面试,被问到这个问题。大家好,我是Mic,一个工作了14年的Java程序员这个问题面试官想考察什么方面的知识?我们......
  • redis集群部署文档
    1.部署的服务器ip地址172.16.0.151172.16.0.173172.16.0.2202.redis版本wgethttps://download.redis.io/releases/redis-6.2.5.tar.gz3.部署架......
  • linux环境配置 (redis、jdk、nginx、mysql)
    linux环境配置环境准备服务器:腾讯云服务器操作系统:centos8.0终端控制器:finalshell3.9.34redis7.0.4jdk1.8.0nginx-1.21.3mysql8.0.30redis安装创建或选......
  • redis 集群安装
    1.前期准备安装ruby升级ruby参见前一篇前期准备#EPEL源安装ruby支持yuminstallrubyrubygems-y使用国内源gemsource-ahttp://mirrors.aliyun.com/rubyge......