什么时候用 redis?

缓存

缓存现在是几乎每个中大型网站的比啥技。合理的利用缓存不仅能提升网站的访问速度,还能大大降低数据库压力。 redis的key-value键值过期机制, 提供了灵活的键淘汰策略 ,所以redis应用场景特别的多。

排行榜

很多网站都有排行榜,如京东的月度销量,商品的最新排行。 redis提供的有序集合数据类型能实现各种复杂排行榜的应用。

计数器

什么是计数器?
电商网站的浏览量、视频的播放量 。为了保证实时有效,每次浏览都得+1. 而此时如果并发量比较高的,每次访问数据库 无是种挑战和压力。

redis提供的incr命令来实现计数器,内存操作性能非常好。

非常适用于这种场景。

分布式会话

集群模式下,在应用不多的情况下,一般使用容器自带的session复制功能就能满足,当应用相对复杂的系统中,就会搭建以redisd等内存数据库为中心的缓存session服务 ,redis 不再由容器管理,而是ssession服务以及内存管理。

分布式锁

很多互联网技术中都实现了 分布式技术。

分布式技术带来的技术挑战是对同一个资源的并发访问, 如全局id,减库存,秒杀场景。

并发量不大的场景可以使用乐观锁,悲观锁。但是并发量高的场合中,数据路锁的思路不太理想,降低了db的性能。

我们这时候可以利用redis的setnx 编写分布式的锁。如果设置返回 1 说明设置成功,否则获取锁失败。

社交网络

点赞 踩 关注/被关注 共同好友等社交网络基本要求下,传统的关系数据库很难存储。

redis提供的哈希、集合等数据结构能很方便的实现这些功能

最新列表

Lpush可以在列表头部插入一个内容id作为关键字, LTRIM可以限制数量。这样列表永远为n个id,无需查询最新的列表,直接根据id去找对应的内容即可

###消 息系统
MQ-消息队列是大型网站必备的中间件。 主要用于业务解耦 流量削峰及异步处理,可实现简单的消息系统。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在实际软件开发中,Redis通常用于解决以下场景和问题: 1. 缓存Redis可以作为缓存层,将频繁访问的数据缓存在内存中,以提高读取速度。这对于需要频繁读取且数据量较大的应用非常有用。 ```python import redis # 连接到Redis服务器 r = redis.Redis(host='localhost', port=6379, db=0) # 尝试从缓存中获取数据 data = r.get('my_key') if data is None: # 如果缓存中没有数据,则从数据库中获取数据 data = db.query('SELECT * FROM my_table') # 将数据存入缓存,设置过期时间为1小时 r.setex('my_key', 3600, data) else: # 如果缓存中有数据,则直接使用缓存数据 print(data) ``` 2. 计数器和排行榜:Redis的原子操作和高性能使其非常适合用作计数器和排行榜的实现。可以使用Redis的`INCR`命令实现计数器功能,使用`ZADD`和`ZREVRANGE`命令实现排行榜功能。 ```python import redis # 连接到Redis服务器 r = redis.Redis(host='localhost', port=6379, db=0) # 增加计数器 r.incr('page_views') # 获取排行榜前10名 top_users = r.zrevrange('user_scores', 0, 9, withscores=True) for user, score in top_users: print(user, score) ``` 3. 分布式锁:在分布式环境下,为了避免多个实例同时修改共享资源导致数据不一致,可以使用Redis的分布式锁来保证同一时间只有一个实例对资源进行操作。 ```python import redis # 连接到Redis服务器 r = redis.Redis(host='localhost', port=6379, db=0) # 获取分布式锁 lock = r.lock('my_resource_lock', blocking_timeout=10) if lock.acquire(): try: # 对共享资源进行操作 print('Do something...') finally: # 释放锁 lock.release() else: print('Failed to acquire lock') ``` 需要注意的是,Redis是一个基于内存的存储系统,对于数据持久化和事务支持的需求较高的场景,可以结合其他数据库(如MySQL)使用,以满足不同的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值