美文网首页
Redis问答

Redis问答

作者: tracyzht | 来源:发表于2017-06-07 00:06 被阅读0次

Q1:redis是单线程的,为什么会有并发问题?

A:redis是单线程的,单个命令执行时是不会有并发问题的。但是例如i++操作,如果在应用程序中采用了多线程,就会有并发问题。

Q2:redis是单线程的,怎么处理并发请求?

A:redis采用IO多路复用来处理并发请求,把多个client请求存放在队列中,采用事件轮询方式处理请求。

Q3:redis事务的是怎么处理的

A: redis采用Multi,Exec来实现事务。Multi标识事务开始,Exec执行命令。redis中的事务能保证一系列指令中间不会插入别的指令。如果有一个操作出错,不会执行回滚。事务执行时会阻塞其它客户端的请求执行。

Q4:redis的watch指令和事务的区别?

A:i++操作分为单个步骤:1、val = get i;2、val=val+1;3、set i。假设 i=1,如果多个连接同时执行第一步,那么在操作执行结束时,i并不是期望的3,很有可能是2。对于这种情况单纯采用Multi,Exec无法得到期望的结果。
Watch命令可用于提供CAS(check-and-set)功能。假设我们通过Watch命令在事务执行之前监控了多个Keys,倘若在Watch之后有任何Key的值发生了变化,Exec命令执行的事务都将被放弃,同时返回Null multi-bulk应答以通知调用者事务执行失败。例如:

WATCH i
val = GET i
val = val + 1
MULTI
SET i $val
EXEC

获取i的值之前先通过WATCH命令监控了该键,此后又将set命令包围在事务中,这样就可以有效的保证每个连接在执行EXEC之前,如果当前连接获取的i的值被其它连接的客户端修改,那么当前连接的EXEC命令将执行失败。这样调用者在判断返回值后就可以获悉val是否被重新设置成功。

Q5:redis是单线程的,再多核机器上怎么使用?

A:可以运行多个redis实例,组成master-slave形式。

Q6:master-slave

1、master可以拥有多个slave
2、多个slave可以连接同一个master外,还可以连接到其他slave
3、主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
4、提高系统的伸缩性

相关文章

  • Redis问答

    Q1:redis是单线程的,为什么会有并发问题? A:redis是单线程的,单个命令执行时是不会有并发问题的。但是...

  • 【问答】Redis

    Memcache和Redis的区别?Redis和memcached 的内存管理的区别? 网络IO模型:Memcac...

  • Redis MS 常见问答

    1. 什么是缓存雪崩?怎么解决? 通常,我们会使用缓存用于缓冲对 DB 的冲击,如果缓存宕机,所有请求将直接打在 ...

  • redis大厂面试问答

    本文总结最近一段时间面试中被问到的专项知识点,一些基础的内容可以直接到GitHub - laozhu123/int...

  • 80行代码爬取百度知道问答全站数据

    爬取知道问答策略 安装依赖包 实例代码 框架参数说明 依赖分布式框架项目参数说明文档 redis-queue-tool

  • 刨根问底 Redis,面试过程真好使

    充满寒气的互联网如何在面试中脱颖而出,平时积累很重要,八股文更不能少!下面带来的这篇 Redis 问答希望能够在你...

  • 刨根问底 Redis,对面试来说小菜一碟

    充满寒气的互联网如何在面试中脱颖而出,平时积累很重要,八股文更不能少!下面带来的这篇 Redis 问答希望能够在你...

  • redis常用命令教程

    Redis 基础教程 Redis 教程、Redis 安装、Redis 配置、Redis 数据类型 Redis 命令...

  • redis 集群搭建

    redis 安装步骤 创建redis用户 useradd redis passwd redis 切换redis用户...

  • Redis cheatsheet 常用命令

    Run redis 运行redis server cd redis/; ./redis-server运行redis...

网友评论

      本文标题:Redis问答

      本文链接:https://www.haomeiwen.com/subject/wltofxtx.html