Skip to content

Commit 18eaa7a

Browse files
committed
update 207-210
1 parent daad290 commit 18eaa7a

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

README.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2291,6 +2291,12 @@ drop直接删掉表,truncate删除表中数据,再插入时自增长id又从
22912291

22922292
### 201.索引的工作原理及其种类
22932293

2294+
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库表中数据。索引的实现通常使用B树以其变种B+树。
2295+
2296+
在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。
2297+
2298+
为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)
2299+
22942300
### 202.连接的种类
22952301
### 203.数据库优化的思路
22962302
### 204.存储过程与触发器的区别
@@ -2299,10 +2305,67 @@ drop直接删掉表,truncate删除表中数据,再插入时自增长id又从
22992305

23002306
## Redis
23012307
### 207.Redis宕机怎么解决?
2308+
2309+
宕机:服务器停止服务‘
2310+
2311+
如果只有一台redis,肯定 会造成数据丢失,无法挽救
2312+
2313+
多台redis或者是redis集群,宕机则需要分为在主从模式下区分来看:
2314+
2315+
slave从redis宕机,配置主从复制的时候才配置从的redis,从的会从主的redis中读取主的redis的操作日志1,在redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据;
2316+
2317+
2, 如果从数据库实现了持久化,此时千万不要立马重启服务,否则可能会造成数据丢失,正确的操作如下:在slave数据上执行SLAVEOF ON ONE,来断开主从关系并把slave升级为主库,此时重新启动主数据库,执行SLAVEOF,把它设置为从库,连接到主的redis上面做主从复制,自动备份数据。
2318+
2319+
以上过程很容易配置错误,可以使用redis提供的哨兵机制来简化上面的操作。简单的方法:redis的哨兵(sentinel)的功能
2320+
23022321
### 208.redis和mecached的区别,以及使用场景
2322+
2323+
区别
2324+
2325+
1、redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可以用于缓存其他东西,例如图片,视频等等
2326+
2327+
2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储
2328+
2329+
3、虚拟内存-redis当物流内存用完时,可以将一些很久没用的value交换到磁盘
2330+
2331+
4、过期策略-memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire设定,例如expire name 10
2332+
2333+
5、分布式-设定memcache集群,利用magent做一主多从,redis可以做一主多从。都可以一主一丛
2334+
2335+
6、存储数据安全-memcache挂掉后,数据没了,redis可以定期保存到磁盘(持久化)
2336+
2337+
7、灾难恢复-memcache挂掉后,数据不可恢复,redis数据丢失后可以通过aof恢复
2338+
2339+
8、Redis支持数据的备份,即master-slave模式的数据备份
2340+
2341+
9、应用场景不一样,redis除了作为NoSQL数据库使用外,还能用做消息队列,数据堆栈和数据缓存等;Memcache适合于缓存SQL语句,数据集,用户临时性数据,延迟查询数据和session等
2342+
2343+
使用场景
2344+
2345+
1,如果有持久方面的需求或对数据类型和处理有要求的应该选择redis
2346+
2347+
2,如果简单的key/value存储应该选择memcached.
2348+
23032349
### 209.Redis集群方案该怎么做?都有哪些方案?
2350+
2351+
1,codis
2352+
2353+
目前用的最多的集群方案,基本和twemproxy一致的效果,但它支持在节点数量改变情况下,旧节点数据客恢复到新hash节点
2354+
2355+
2redis cluster3.0自带的集群,特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。具体看官方介绍
2356+
2357+
3.在业务代码层实现,起几个毫无关联的redis实例,在代码层,对key进行hash计算,然后去对应的redis实例操作数据。这种方式对hash层代码要求比较高,考虑部分包括,节点失效后的替代算法方案,数据震荡后的字典脚本恢复,实例的监控,等等
2358+
23042359
### 210.Redis回收进程是如何工作的
23052360

2361+
一个客户端运行了新的命令,添加了新的数据。
2362+
2363+
redis检查内存使用情况,如果大于maxmemory的限制,则根据设定好的策略进行回收。
2364+
2365+
一个新的命令被执行等等,所以我们不断地穿越内存限制的边界,通过不断达到边界然后不断回收回到边界以下。
2366+
2367+
如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保存到一个新的键),不用多久内存限制就会被这个内存使用量超越。
2368+
23062369
## MongoDB
23072370
### 211.MongoDB中对多条记录做更新操作命令是什么?
23082371
### 212.MongoDB如何才会拓展到多个shard里?

0 commit comments

Comments
 (0)