Redis的应用场景有哪些

0.什么是Redis?

基于内存的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis 支持多种数据结构,包括字符串(String)、哈希表(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)以及更复杂的数据结构。

以下是关于 Redis 的一些主要特点:

  1. 性能高:Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s。

  2. 丰富的数据类型:Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

  3. 原子性:Redis 的所有操作都是原子性的,意味着要么成功执行要么失败完全不执行。

  4. 丰富的特性:Redis 还支持 publish/subscribe, 通知, key 过期等等特性

注意的是redis的事务只保证原子性,而不是用来处理可能的错误状态,也就是不能回滚。

1.缓存

由于 Redis 的高性能,它经常被用作缓存层,来快速读取频繁访问的数据,减轻后端数据库的压力。比如主页的数据,但是也可以用ES来代替

2.存储会话

比如我们做登录的时候的状态可以存储到redis中,还可以实现token的过期时间

3.zSet实现接口限流

滑动窗口思想

SpringAOP+自定义注解实现限制接口访问频率,利用滑动窗口思想Redis的ZSet(附带整个Demo)

4.布隆过滤器实现签到功能

在实现签到功能时,你可以将布隆过滤器用作一个预先检查的步骤。当一个用户尝试签到时,你可以首先检查他们是否已经在布隆过滤器中。如果不在,那么你可以安全地认为他们还没有签到,并允许他们进行签到操作。然后,你可以将他们的标识信息(如用户ID)加入到布隆过滤器中。如果他们在布隆过滤器中,那么可能他们已经签到过了,你可以进行进一步的检查(如在数据库中进行查找)以确认

5.共同好友的实现

Set数据结构可以使用交集和并集实现共同好友

6.Geo可以实现地理位置的功能

比如实现两个地理位置之间的距离,距离最近的顺序排行

7.分布式锁

setnx实现分布式锁

8.延迟队列

在 Redis 中,你可以通过使用 Sorted Set 数据结构来实现延迟队列。这种实现方式的关键在于 Sorted Set 中的每个元素都会关联一个分数,你可以把这个分数当作消息的延迟时间。

  • 使用 ZADD 命令将消息添加到 Sorted Set 中,消息的延迟时间(Unix 时间戳)作为分数:
  • # 添加一个延迟消息
    redis-cli ZADD myDelayQueue 1632292800 message1
  • 使用 ZRANGEBYSCORE 命令找出所有已经到期的消息:
  • # 获取所有已经到期的消息
    redis-cli ZRANGEBYSCORE myDelayQueue 0 $(date +%s)

    在这个例子中,$(date +%s) 是当前的 Unix 时间戳。

  • 使用 ZREMRANGEBYSCORE 命令移除所有已经到期的消息:
  • # 移除所有已经到期的消息
    redis-cli ZREMRANGEBYSCORE myDelayQueue 0 $(date +%s)

注意:你需要定期运行第 2 步和第 3 步,以便获取和处理到期的消息。另外,这只是一个基本的示例,实际的应用可能会更复杂,例如,你可能需要处理消息的确认、重试、超时等情况。

以上只是列出部分,还有许多功能可以实现 

相关推荐

  1. Redis应用场景哪些

    2024-04-24 11:42:01       14 阅读
  2. Redis常用场景哪些?

    2024-04-24 11:42:01       30 阅读
  3. Redis哪些适合场景

    2024-04-24 11:42:01       30 阅读
  4. 视觉识别应用场景哪些

    2024-04-24 11:42:01       14 阅读
  5. Vue常用修饰符哪些什么应用场景

    2024-04-24 11:42:01       37 阅读
  6. Sora模型应用场景哪些

    2024-04-24 11:42:01       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-24 11:42:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-24 11:42:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-24 11:42:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-24 11:42:01       20 阅读

热门阅读

  1. Mysql8 创建表,按年/月分区存储

    2024-04-24 11:42:01       14 阅读
  2. 剑指offer--最小的k个数

    2024-04-24 11:42:01       14 阅读
  3. 一个基于 Vue.js 实现的简单增删改查(CRUD)案例

    2024-04-24 11:42:01       13 阅读
  4. 如何在three.js中画3D圆弧及半圆弧组成圆

    2024-04-24 11:42:01       15 阅读
  5. 行为型设计模式(下)

    2024-04-24 11:42:01       13 阅读
  6. Selenium一本通

    2024-04-24 11:42:01       12 阅读
  7. Flutter-如何序列化和反序列化为json对象

    2024-04-24 11:42:01       16 阅读
  8. Linux中的高级IO函数(三)fcntl

    2024-04-24 11:42:01       14 阅读
  9. windows ubuntu linux三剑客,sed awk grep 篇,1.

    2024-04-24 11:42:01       14 阅读
  10. 深入浅出MySQL-01-【SQL基础】

    2024-04-24 11:42:01       15 阅读
  11. 停车场管理系统(栈和队列的实现和应用)(cpp)

    2024-04-24 11:42:01       14 阅读