Redis介绍 (一)

为什么要使用Redis?

1、高性能 (线程模型、数据结构、持久化、网络框架)

2、高可靠 (主从复制、哨兵模式)

3、高可扩展 (数据切片、负载均衡)

Redis几大数据结构

1、String

        适用场景:缓存、计数器限流、分布式ID、分布式锁

2、Hash

        适用场景:对象数据存储、统计类数据、购物车、分布式锁

3、List

        适用场景:文章列表(评论、问答类型)、用户消息时间线(先后顺序排列)、消息队列

4、Set

        适用场景:无序   标签、抽奖、签到等数据

5、Zset

        适用场景:订单统计(使用时间戳,对每小时,每天多少订单进行数据统计)

                           ip统计(Uv相同数据会进行覆盖,对每小时,每天多少Uv进行统计处理)

                zSetOperations.count方法

Redis为什么快?

1、纯内存访问,不与磁盘交互。

2、单线程,避免上下文切换。

3、丰富的数据结构。

4、多路复用的epoll网络模型

       优点:可以通过epoll_create、epoll_ctl、epoll_wait三个方法去维护,操作socket,我们不用管socket,只需去双向数据链表里面去拿数据就行了。(具体看下图) 

5、渐进式-ReHash,缓存时间戳等数据。

Redis6.0之前为什么不用多线程

1、使用Redis,CPU不是瓶颈,受限制于网络、内存。

2、提高Redis,Pipeline (批量命令) 每秒可以达到100W请求。

3、单线程,减少网络IO消耗。

4、多线程可能引发的问题 (线程切换,加锁,解锁,线程死锁等)

5、惰性ReHash。

Redis6.0之后为什么使用多线程

一般百分之八十以上的公司,单线程就够用了,多线程是默认不开启的,需要手动修改配置文件,io-threads-redis-do yes (默认为No)

1、大公司海量数据。(当QPS不止100W的时候,单线程已经不足够实现这个任务了)

2、分布式架构的缺点。(运维成本)

3、服务器CPU资源充分利用。(上面已经说了,redisCPU不是瓶颈,对CPU的利用非常小)

Redis高级功能

1、AOF/RDB持久化。 (默认开启的是RDB,AOF需要手动开启,一般Redis启动,会生成一个dump.rdb文件,这个文件就是我们redis数据的储存,我们需要备份啊,或者说要把数据移动到别的服务器上面,也只要拷贝这个文件到该服务器Redis文件下,然后重启redis就能实现了)

2、主从(同步分两种,全量同步、增量同步-)、哨兵、集群。(master节点挂了,就要用从redis,然后这个时候就要用到哨兵,去指定,哨兵,是主从到集群过度的一种方式)

3、慢查询、Pipeline批处理。(慢查询日志,会去帮我们记录查询慢的数据,然后我们自己去处理。Pipeline就是沾包)

4、Lua、分布式锁。(Lua脚本用于分布式锁,可以自定义)

Redis持久化方式

1、AOF(二进制快照)

2、RDB(命令追加)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值