redis集群的常见面试题

                redis集群的常见面试题

1) 简单说一下你对分布式理解?

答:一个业务分拆多个子业务,部署在不同的服务器上实现相同的业务就是分布式若是一个字节业务点垮了 那么整个项目将无法运行

2) 简单说一下你对集群理解?

为了解决大型网站的访问量大、并发量高、海量数据的问题  和对分布式的问题进行解决的一个方案   将几台服务器集中在一起,实现同一业务,多个处理相同功能的服务器集合。若一台服务器垮了,其它的服务器可以顶上来。

3) 说一下分布式和集群联系和区别

区别:集群是相当于一个存储数据的地方  而分布式就是就是一直工作的方式

相似点 就是集群只要布置在不同的服务器上或者不同的机器上就可以称为集群

分布式一个程序运行在不同的机器上就可以称为分布式

联系:集群可能运行在一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。

4) redis集群方式有哪些?

三种方式:

  1. 主从复制

① 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离

缺点:

  1. Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失 败,需要等待机器重启或者手动切换前端的IP才能恢复。
  2. 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性
  3. Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。
  4. 哨兵模式:

① 监控主服务器和从服务器是否正常运行。

② 主服务器出现故障时自动将从服务器转换为主服务器。

③ 主从可以自动切换,系统更健壮,可用性更高。

缺点:

1.Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。

5)简单说一下redis-cluster里面槽?

槽是存放数据,存放是要通过key计算槽位,选择对应的服务器来存储,获取也是同样的算法.

默认16384个槽位要均匀分布到主节点上面

为了槽里面数据安全要对主节点进行1-N从节点备份

6)简单说一下redis-cluster里面选举投票机制

所有主节点都参与投票,默认半数以上挂点,启动容错机制,提升从节点为主节点.

7)怎么通过命令连接redis集群 -c

8)怎么通过jedis连接集群

1.通过代码

@Testpublic void testJedisCluster() throws Exception {

//创建一连接,JedisCluster对象,在系统中是单例存在

Set<HostAndPort> nodes = new HashSet<>();

nodes.add(new HostAndPort("127.0.0.1", 7001));

nodes.add(new HostAndPort("127.0.0.1", 7002));

nodes.add(new HostAndPort("127.0.0.1", 7003));

nodes.add(new HostAndPort("127.0.0.1", 7004));

nodes.add(new HostAndPort("127.0.0.1", 7005));

nodes.add(new HostAndPort("127.0.0.1", 7006));

JedisCluster cluster = new JedisCluster(nodes);

//执行JedisCluster对象中的方法,方法和redis一一对应。

cluster.set("cluster-test", "my jedis cluster test");

String result = cluster.get("cluster-test");

System.out.println(result);

//程序结束时需要关闭JedisCluster对象    cluster.close();

}

2.通过spring(ioc控制反转)

配置XML

<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">

<constructor-arg index="0">

<set>

<bean class="redis.clients.jedis.HostAndPort">

<constructor-arg index="0" value="192.168.101.3"></constructor-arg>

<constructor-arg index="1" value="7001"></constructor-arg>

</bean>

<bean class="redis.clients.jedis.HostAndPort">

<constructor-arg index="0" value="192.168.101.3"></constructor-arg>

<constructor-arg index="1" value="7002"></constructor-arg>

</bean>

<bean class="redis.clients.jedis.HostAndPort">

<constructor-arg index="0" value="192.168.101.3"></constructor-arg>

<constructor-arg index="1" value="7003"></constructor-arg>

</bean>

<bean class="redis.clients.jedis.HostAndPort">

<constructor-arg index="0" value="192.168.101.3"></constructor-arg>

<constructor-arg index="1" value="7004"></constructor-arg>

</bean>

<bean class="redis.clients.jedis.HostAndPort">

<constructor-arg index="0" value="192.168.101.3"></constructor-arg>

<constructor-arg index="1" value="7005"></constructor-arg>

</bean>

<bean class="redis.clients.jedis.HostAndPort">

<constructor-arg index="0" value="192.168.101.3"></constructor-arg>

<constructor-arg index="1" value="7006"></constructor-arg>

</bean>

</set>

</constructor-arg>

<constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg></bean>

测试代码:

private ApplicationContext applicationContext;

@Before

public void init() {

applicationContext = new ClassPathXmlApplicationContext(

"classpath:applicationContext.xml");

}

// redis集群    @Test

public void testJedisCluster() {

JedisCluster jedisCluster = (JedisCluster) applicationContext

.getBean("jedisCluster");

jedisCluster.set("name", "zhangsan");

String value = jedisCluster.get("name");

System.out.println(value);

}

原文地址:https://www.cnblogs.com/1999wang/p/11509267.html

时间: 2024-11-08 10:40:04

redis集群的常见面试题的相关文章

redis知识点及常见面试题

redis知识点及常见面试题 参考: https://zm8.sm-tc.cn/?src=l4uLj4zF0NCIiIjRnJGdk5CYjNGckJLQrIqNiZaJnpOWjIvQno2LlpyTmo zQx87OxsfGztGXi5KT&uid=c9712557c9cde8bef666f89d1d708c67&hid=40c90f91312807e0fc0320b8ae fa07f7&pos=2&cid=9&time=1532475858864&fr

测开常见面试题什么是redis

企业中redis是必备的性能优化中间件,也是常见面试题,首先Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库.Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string.list.set.zset(sorted set).hash. 那么为什么要使用类似redis? 单机时代,存储只用一台机器装mysq

02:Redis常见面试题

1.1 redis基础面试题 1.什么是Redis?简述它的优缺点? 1. Redis本质上是一个Key-Value类型的内存数据库,很像memcached. 2. 整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存. 3. 因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB. 4. Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大

21道 Redis 常见面试题,必须掌握!

1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存.因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB.Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个valu

java常见面试题——java笔试题总结

注:本文转载自http://www.cnblogs.com/huajiezh/p/5790928.html,版权归其所有! Java常见面试题总结 一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4.描述一下ArrayList和LinkedList各自实现和区别 5.Java中的队列都有哪些,有什么区别. 6.反射中,Class.forName和cl

JDBC常见面试题集锦

什么是JDBC,在什么时候会用到它? JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库.JDBC接口及相关类在java.sql包和javax.sql包里.我们可以用它来连接数据库,执行SQL查询,存储过程,并处理返回的结果. JDBC接口让Java程序和JDBC驱动实现了松耦合,使得切换不同的数据库变得更加简单. 有哪些不同类型的JDBC驱动? 有四类JDBC驱动.和数据库进行交互的Java程序分成两个部分,一部分是JDB

数据库常见面试题总结

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 数据库常见面试题总结 1.      SQL的表连接方式有哪些? SQL中连接按结果集分为:内连接,外连接,交叉连接 内连接:inner join on,两表都满足的组合.内连接分为等值连接,不等连接,自然连接. 等值连接:两表中相同的列都会出现在结果集中.  自然连接:两表中具体相同列表的列会合并为同一列出现在结果集中. 外连接:分为左(外)连接,右(外)连接,全连接 左(外)连接:A left (outer) join B,以A表为基础,A

PHP常见面试题汇总(二)

PHP常见面试题汇总(二) //第51题:统计一维数组中所有值出现的次数?返回一个数组,其元素的键名是原数组的值;键值是该值在原数组中出现的次数 $array=array(4,5,1,2,3,1,2,"a","a"); $ac=array_count_values($array); /** * 输出结果: * Array( *   [4] => 1 *   [5] => 1 *   [1] => 2 *   [2] => 2 *   [3] 

JDBC常见面试题

以下我是归纳的JDBC知识点图: 图上的知识点都可以在我其他的文章内找到相应内容. JDBC常见面试题 JDBC操作数据库的步骤 ? JDBC操作数据库的步骤 ? 注册数据库驱动. 建立数据库连接. 创建一个Statement. 执行SQL语句. 处理结果集. 关闭数据库连接 代码如下: Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { /* * 加载驱动有两种方