1. 什么是redis
它是用C语言编写的高性能非关系型的键值对数据库。
与传统的数据库不同的是redis的数据是存储在内存中的,所以读写速度非常快。因此redis经常被用于做缓存来使用,它每秒可以处理十万次+读写操作,除此之外redis也经常被用作分布式锁。
2. redis支持的数据类型有哪些
1)String:字符串
2)Hash:键值对
3)List:队列
4)Set:集合
5)SortSet:排序集合
3. redis的优缺点
优点:
1):读写速度非常快,读:11万,写:8万
2):支持数据持久化:RDB和AOF两种方式
3):支持事务:redis的所有操作都是原子性,还支持复合操作的原子性。
4):支持主从复制:主机自动将数据复制给副机,实现读写分离
5):支持的数据结构丰富:String、Hash、List、Set、SortSet
缺点:
1):分区时动态扩容或缩容可能非常复杂
2):同时操作多个key,则不能使用Redis事务。
4. redis的数据淘汰策略
1):volatile-lru:从已设置过期的数据集中挑选最近最少使用的淘汰
2):volatile-ttr:从已设置过期的数据集中挑选将要过期的数据淘汰
3):volatile-random:从已设置过期的数据集中任意挑选数据淘汰
4):allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
5):allkeys-random:从数据集中任意挑选数据淘汰
6):noenviction:禁止淘汰数据
注意:redis淘汰数据时还会同步到AOF
5. redis常见性能问题和解决方案
1):master最好不要做任何持久化工作,比如RDB内存快照和AOF日志文件
2):如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次
3):为了主从复制的速度和连接的稳定性,master和slave最好在同一个局域网内
4):尽量避免在压力很大的库上增加从库
5):主从复制尽量使用单项链表,这样如果主节点宕机,就可以直接启用第一个副节点来当主节点,其他副节点不变。
6. redis哈希槽的概念?
在去中心化集群中,redis将16384个哈希槽平分给所有的主节点,根据这些哈希槽来判断将当前数据放入到哪个主节点中。
在取数据的时候,根据要取数据的key来判断去哪个节点中取出该数据。