Redis 应用场景 和Databases

会话缓存(Session Cache)
热点数据(经常会被查询,但是不经常被修改或者删除的数据)另外,内存中的数据也提供了AOF和RDB等持久化机制可以选择
Select 数据库前查询redis,有的话使用redis数据,放弃select 数据库,没有的话,select 数据库,然后将数据插入redis
update或者delete数据库钱,查询redis是否存在该数据,存在的话先删除redis中数据,然后再update或者delete数据库中的数据
计数器/排行榜
诸如统计点击数等应用。由于单线程,可以避免并发问题,保证不会出错,100%毫秒级性能。
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。所以,我们要从排序集合中获取到排名最靠前的10个用户–我们称之为“user_scores”,我们只需要像下面一样执行即可:
当然,这是假定你是根据你用户的分数做递增的排序。如果你想返回用户及用户的 分数,你需要这样执行:
ZRANGE user_scores 0 10 WITHSCORES
队列
相当于消息系统,ActiveMQ,RocketMQ等工具类似,但是个人觉得简单用一下还行,如果对于数据一致性要求高的话还是用ActiveMQ等专业系统。
由于redis把数据添加到队列是返回添加元素在队列的第几位,所以可以做判断用户是第几个访问这种业务
队列不仅可以把并发请求变成串行,并且还可以做队列或者栈使用
分布式锁与单线程机制
验证前端的重复请求(可以自由扩展类似情况),可以通过redis进行过滤:每次请求将request Ip、参数、接口等hash作为key存储redis(幂等性请求),设置多长时间有效期,然后下次请求过来的时候先在redis中检索有没有这个key,进而验证是不是一定时间内过来的重复提交。
秒杀系统,基于redis是单线程特征,防止出现数据库“爆破”
发布/订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道

Database的内容要点包括:

Ø 数据库主要由 dict 和 expires 两个字典构成,其中 dict 保存键值对,而 expires 则保存键的过期时间。

Ø 数据库的键总是一个字符串对象,而值可以是任意一种 Redis 数据类型,包括字符串、哈希、集合、列表和有序集。

Ø expires 的某个键和 dict 的某个键共同指向同一个字符串对象,而 expires键的值则是该键以毫秒计算的 UNIX 过期时间戳。

Ø Redis 使用惰性删除和定期删除两种策略来删除过期的键。

Ø 更新后的 RDB 文件和重写后的 AOF 文件都不会保留已经过期的键。

Ø 当一个过期键被删除之后,程序会追加一条新的 DEL 命令到现有 AOF 文件末尾。

Ø 当主节点删除一个过期键之后,它会显式地发送一条 DEL 命令到所有附属节点。

Ø 附属节点即使发现过期键,也不会自作主张地删除它,而是等待主节点发来 DEL 命令,这样可以保证主节点和附属节点的数据总是一致的。

Ø 数据库的dict 字典和expires 字典的扩展策略和普通字典一样。它们的收缩策略是:当节点的填充百分比不足 10% 时,将可用节点数量减少至大于等于当前已用节点数量。
在这里插入图片描述

                   哈希槽映射图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值