Redis

作者: 红烧鸡翅膀_我喜欢吃 | 来源:发表于2020-03-02 12:08 被阅读0次

分布式kv存储库,C语言,遵守BSD,6379

------------------------------------------------

六种结构:

string  list  hash set zset hyperloglog

第六种是2.8后新增的,用于基数统计的结构,占用内存小(12k),只存计数不存值。

------------------------------------------------

与memcache区别

1、Redis可持久化

2、多种数据结构类型

3、memcache Value有大小限制(1M)

4、memcache相对快

--------------------------------------------------------

Redis持久化方式

1、(镜像)BDS,使用save或者bgsave,后者fork一个子进程保存快照,可以手动或者通过配置合适的时机自动保存。

2、增量--AOF,保存的是非查询操作,以增量的方式保存;

相对于1恢复比较慢,文件大,但可读性好,不阻塞IO,消耗IO少

---------------------------------------------------------------

分布式锁的实现方式之一(zk也可以实现)

1、使用setnx,容易出现异常导致的锁不释放,解决方法设置超时时间

2、使用基于redis实现的redission框架,原理是发送lur脚步到redis执行,脚步执行本身具有原子性。

-------------------------------------------------------------------------

部署方式

1、cluser,当前5主5从,先按主从顺序各自启动,后做链接,成集群。

2、redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384(2的14次方) 求余数

扩容或缩减

1、没有采用一致性hash,使用slot移动保证节点变化导致的问题

2、会导致临近节点数据暂时不可用,也可采用虚拟节点(一node分配两份slot)解决。

---------------------------------

redis的事务不是真正的事务,可能出现执行一半的情况

-------------------------------------------------------------------------------

Redis集群是的主节点们是对等节点,采用gossip(去中心化思路的分布式协议)通讯,保证最终一致性

Gossip协议是可扩展的,因为它只需要O(logN) 个周期就能把消息传播给所有节点

优点:性能好、可靠、轻量

缺点:拜占庭问题:即,如果有一个恶意传播消息的节点,Gossip协议的分布式系统就会出问题。

https://www.jianshu.com/p/54eab117e6ae

---------------------------------------------------------------------------------

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 

-----

 支持发布订阅消息通信模式,可以用来做队列

https://www.runoob.com/redis/redis-pub-sub.html

-----------------------------------------

Zset的底层实现数据结构是跳表,查找或插入时间复杂度为O(logn),空间复杂度为2n

相关文章

网友评论

      本文标题:Redis

      本文链接:https://www.haomeiwen.com/subject/yzupkhtx.html