关于redis

首先我们一提到redis第一反应就是效率高,但是它为什么效率高呢?
1.我们都知道Mysql等数据库有一个特点是持久性,它可以将数据通过程序持久化到硬盘,数据库等,而在持久化的过程中必定会有I/O操作的,而redis是纯内存数据库,它的存取操作是直接从内存操作的,省去了大量的I/O操作,因此效率极高.
2.redis采用的是单线程,避免了线程之间的竞争.
3.数据结构简单,全程使用hash结构,读取效率高
4.采用IO多路复用(使用一个线程处理多个socket连接),可以处理并发连接.
5.Redis使用自己的事件分离器,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争,内部使用非阻塞方式执行,吞吐量大.

redis的持久化方式:
首先需要知道什么是持久化:
将内存中的数据持久化到磁盘中,在下次启动redis时可以将磁盘中的数据加载到内存中.
RDB: 将当前数据通过快照的方式持久化到硬盘上,有两种方式
1.默认配置是
save 900 1 # 15分钟内有一个写操作
save 300 10 # 5分钟内有10个写操作
save 60 10000 # 1分钟内有10000个写操作
2.通过调用 SAVE 或者 BGSAVE , 手动让 Redis 进行数据集保存操作。

AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF 命令以 Redis 协议追加保存每次写的操作到文件末尾。

redis的数据结构:
list,set,zset,string,hash五种数据结构
不同的应用场景适合使用不同的数据结构,如zset可以作为排行榜使用(详见redis实现排行榜)
其他的就不多说了,一般都是根据具体业务来选择使用那种结构类型.

redis的应用场景:
缓存会话(单点登录):
在分布式架构中,每一个web都有自己的session,而当用户登陆成功之后,需要实现单点登录,无需多次登录,因此我们需要将session统一.而redis恰好就解决了这个问题,将用户信息存到redis中,失效时间即为session失效时间.
分布式锁,比如:使用setnx(没用过,后期补充)
各种排行榜或计数器(详见redis实现排行榜)
商品列表或用户基础数据列表等(普通的存取数据)
使用list作为消息对列(没用过,后期补充)
秒杀,库存扣减等(redis是单线程,将数据存储到redis中.存取速度快,用来做秒杀功能是非常合适的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值