redis常见问题

redis常见问题

1.为什么使用redis?
答:redis是一种典型的nosql即非关系数据库,并且工作在内存中,处理数据效率高,很适合充当整个互联网架构中各级之间的缓存。并且可以减轻访问数据库的压力,海量访问可能造成数据库宕机。redis的存储结构是key-value(五种不同的数据类型,String、hash、list、set、zset),这五种数据结构可以很好地描述实际的业务,不必为了适应关系数据库而做一些抽象。redis还提供了数据持久化。通过主从复制实现了redis高可用。
2.redis的五种数据结构的应用场景?
string、hash:可以实现数据的缓存
list:提供消息队列,在商品秒杀是可以使用
set:集合实现好友、兴趣、课程
zset:排行榜的应用
3.redis工作在内存中是如何实现数据持久化的?
redis持久化的实现,由两种方式构成aof和rdb。
aof是把每次写的操作都已追加的方式记录在文件中刷到磁盘,可以实现每秒同步命令,所以aof的数据一致性强。aof保存的是命令set name xxx。
rdb是每个一段时间进行一次快照,保存到rdb文件中,所以rdb的数据一致性不强,可能造成大量提及丢失。rdb保存的是key-value值。
区别:aof性能高,数据一致性高,但是aof随之数据越来越多,aof的文件大小越大,如何恢复数据可能造成卡顿
4.redis-cluster如何实现的?
引用了槽道原理。将一块完整的内存空间被多个节点分割,每个节点平均分配16384个槽道。并且每个节点通过握手记录彼此节点的信息(基于二级制传输协议优化传输速度)。当一条数据要存入缓存时,通过计算它的key值对16384取模,得到结果,对照每个节点的槽道范围,看是否属于归他管理,如果是则直接调用set命令存储,如果不是则返回客户到指定节点存储。如果某个节点出现宕机,则其余节点会投票。如果该节点实现了主从复制,则会从从节点选出一个作为主节点。如果没有从节点,则会将该节点的槽道平均分配到其余节点。
5.槽道原理如何决定管理权和寻找正确节点?
槽道的结构:槽道是一个虚拟的计算概念,内存保存了2个结构对应一个槽道。
位序列:每个槽道管理者内存中都有二进制,长度为16384,每个下标对应一个二进制值,通过对key值进行计算,对应二进制下标的二进制值是1,则进行管理,如果是0,则不管理。如果不管理通过自索引数组返回给用户指定的节点去存储。
索引数组,数组的长度是16384个元素,每个元素对应引用变量知道槽道号的管理节点信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值