Redis数据库相关:

MySQL,Oracle数据库管理系统(都是关系型数据库)

Ocacle:大型数据库,收费,内存大,对事物完全支持,安全性更高。

MySQL:中小型数据库,开源,内存小,对事物默认不支持,在一些存储引擎中支持,如innodb

随着web的发展,访问量的上升,高访问容易打崩数据库,使用关系型数据库的web在性能上不够(磁盘I/O),在云计算,大数据盛行NOSQL,其高性能,可扩展性强,高可用性。

Redis:NOSQL数库(memCache,Cassadra,Mongo等),redis数据类型,五种自有类型(String,Hash,List,Set,SortedSet),一种自定义类型。

使用ANSI C编写的开源,包含多种数据结构,支持网络,基于内存,可选持久性的键值对存储数据库,应用场景:缓存系统(“热点数据”,”高频读”,”低频写”),计算器,消息队列系统,排行榜,社交网络和实时系统。

Redis特性:基于内存运行,性能高效,支持分布式,理论上可以无限扩展,key-value存储系统,开源的使用ANSI C语言编写,遵守BSD协议,支持网络,可基于内存亦可持久化的日志型,key-value数据库,并提供多种语言的API。

Redis特点:C/S通讯模型,单进程单线程模型,丰富的数据类型,持久化,高并发读写,支持lua脚本(轻量小型脚本语言,用标准编写并以源代码形式开放)。

Redis特性:事务,发布订阅(pub(发)/sub(收)),stream

Redis常见问题:击穿,雪崩

大量数据失效时间集中出现redis卡顿,严重会缓存雪崩。

Redis分布式锁:先setnx来争抢锁,抢到后再用expire给锁加一个过期时间防止锁忘记释放,setnx后expire前进程意外crash或重启维护,这个锁永远不会释放,使用set将上两者合二为一,寻找固定前缀开头的key,使用keys指令扫出指定模式key列表。

Redis单线程,redis做异步队列,一般用list结构作为队列,rpush/lpop,生产/消费消息,

当lpop没有消息时,要sleep一会再重试,也可不sleep使用blpop,没有消息会阻塞直到消息到来,pub/sub 是 1:N 也就是生产一次,消费多次,但是消费下线,生产消息就会丢失,redis使用SortedSet实现延时队列,拿时间戳作为score,消息内容作为key,调用zadd来生产消息,消费者用zrange by score指令获取N秒之前的数据轮询进行处理。

Redis持久化:1、RDB做镜像全量持久化;2、AOF做增量持久化

Redis同步:主从同步,从从同步

Redis集群:1、Redis Sentinal 高可用,在master宕机会自动将slave提升为master继续提供服务。2、Redis Cluster 扩展性,单个Redis内存不足,使用Cluster进行分片存储

Redis:key-value库

Redis:String数据类型实现包含sds.c(Simple Dynamic Strings)中,底层是C语言,redis定义sdshdr结构,保存字符串buf,保存free(剩余长度)以及len(字符长度)。

Redis这样做的好处:获取字符串长度复杂度O(1),不会造成缓冲区溢出,减少修改字符串带来的内存重分配次数,二进制安全,兼容部分C字符串函数。

Redis跳表:获取节点的rank排名,或者获取指定范围的rank的节点:①计算每层插入节点的前一个节点,以及该节点的rank;②找出后继节点;③创建新节点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值