仿论坛项目--Redis,一站式高性能存储方案

2024-09-06 06:04

本文主要是介绍仿论坛项目--Redis,一站式高性能存储方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Redis入门

• Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构:
字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。
• Redis将所有的数据都存放在内存中,所以它的读写性能十分惊人。
同时,Redis还可以将内存中的数据以快照或日志的形式保存到硬盘上,以保证数据的安全性。
• Redis典型的应用场景包括:缓存、排行榜、计数器、社交网络、消息队列等。
下载好之后,配置环境变量。E:\work\Redis
打开cmd,输入redis-cli启动redis
默认15个库,通过命令select 1,2…选择相应的库

set test:count 1
get test:count取值
incr test:count 增加
decr test:count 减少

Spring整合Redis

• 引入依赖

  • spring-boot-starter-data-redis
    • 配置Redis
  • 配置数据库参数
  • 编写配置类,构造RedisTemplate
    • 访问Redis
  • redisTemplate.opsForValue()
  • redisTemplate.opsForHash()
  • redisTemplate.opsForList()
  • redisTemplate.opsForSet()
  • redisTemplate.opsForZSet()

点赞

• 点赞

  • 支持对帖子、评论点赞。
  • 第1次点赞,第2次取消点赞。
    • 首页点赞数量
  • 统计帖子的点赞数量。
    • 详情页点赞数量
  • 统计点赞数量。
  • 显示点赞状态。

我收到的赞

• 重构点赞功能

  • 以用户为key,记录点赞数量
  • increment(key),decrement(key)
    • 开发个人主页
  • 以用户为key,查询点赞数量

关注、取消关注

• 需求

  • 开发关注、取消关注功能。
  • 统计用户的关注数、粉丝数。
    • 关键
  • 若A关注了B,则A是B的Follower(粉丝),B是A的Followee(目标)。
  • 关注的目标可以是用户、帖子、题目等,在实现时将这些目标抽象为实体。

关注列表、粉丝列表

• 业务层

  • 查询某个用户关注的人,支持分页。
  • 查询某个用户的粉丝,支持分页。
    • 表现层
  • 处理“查询关注的人”、“查询粉丝”请求。
  • 编写“查询关注的人”、“查询粉丝”模板。

优化登录模块

• 使用Redis存储验证码

  • 验证码需要频繁的访问与刷新,对性能要求较高。
  • 验证码不需永久保存,通常在很短的时间后就会失效。
  • 分布式部署时,存在Session共享的问题。
    • 使用Redis存储登录凭证
  • 处理每次请求时,都要查询用户的登录凭证,访问的频率非常高。
    • 使用Redis缓存用户信息
  • 处理每次请求时,都要根据凭证查询用户信息,访问的频率非常高。

关于Redis的概念,下列描述错误的是()

A.NoSQL是关系型数据库之外的数据库的统称,Redis就是一个NoSQL数据库。

B.Redis以键值对的形式,将数据存储于硬盘中,其所有的kay都是字符串类型!

C.Redis的值支持多种数据类型,包括字符串、哈希、列表、集合、有序集合等。

D.Redis提供了对值进行运算的命令,如对集合求交集、并集、差集等。

解析:
A. NoSQL是关系型数据库之外的数据库的统称,Redis就是一个NoSQL数据库。

这个说法是对的。NoSQL数据库确实是指那些非关系型的数据库,而Redis正是一个NoSQL数据库。

B. Redis以键值对的形式,将数据存储于硬盘中,其所有的key都是字符串类型!

这里有一个错误。Redis默认是将数据存储在内存中的,并不是硬盘。虽然Redis可以从硬盘中读取持久化数据或把数据写入硬盘(通过RDB快照或AOF机制),但其主要特性之一就是作为内存数据库提供快速的数据访问。

C. Redis的值支持多种数据类型,包括字符串、哈希、列表、集合、有序集合等。

这个说法是正确的。Redis支持多种数据类型,包括但不限于字符串、哈希、列表、集合、有序集合等。

D. Redis提供了对值进行运算的命令,如对集合求交集、并集、差集等。

这也是正确的。Redis确实提供了针对集合和其他数据类型的命令来执行各种操作,包括但不限于交集、并集、差集等。

关于Redis的持久化,下列描述错误的是:()

A.RDS是以快照的形式,将内存中的数据整体拷贝到硬盘上。
B.执行RDS存储时会产生阻塞,因此RDS不适合实时备份,而适合定时备份。
C.AOF是以日志形式,将内存中的数据整体拷贝到硬盘上。
D.AOF的操作实时性好,但是产生的数据体积大,数据的恢复速度慢。

解析:
A. RDB(Redis Database dump,即RDS)是以快照的形式,将内存中的数据整体拷贝到硬盘上。

这个描述是正确的。RDB是Redis的一种持久化方式,它会创建一个数据快照并保存到硬盘上。

B. 执行RDB存储时会产生阻塞,因此RDB不适合实时备份,而适合定时备份。

这个描述也是准确的。在执行RDB持久化时,Redis会有一个短暂的时间内停止处理客户端请求,这可能会导致服务短暂中断或延迟,因此通常是在低峰时段进行。

C. AOF(Append Only File)是以日志形式,将内存中的数据整体拷贝到硬盘上。

这里存在错误。AOF并不是将内存中的数据整体拷贝到硬盘上,而是记录所有写入操作的命令到一个文件中。当Redis启动时,它可以通过重新执行这些命令来重建数据集。

D. AOF的操作实时性好,但是产生的数据体积大,数据的恢复速度慢。

这个描述基本是正确的。AOF因为记录的是命令,所以它的实时性较好,但由于记录了每一次写操作,文件可能变得非常大,而且在数据恢复时可能需要花费较长时间来重放这些命令。

想要返回有序集合中元素的个数,下列命令中正确的是()

A.zcard key
B.scard key
C.zlen key
D.zsize key

解析:
A.zcard key - 这个命令用于获取无序集合(Set)的大小,而不是有序集合(Sorted Set)。

B.scard key - 这个命令同样用于获取无序集合(Set)的大小,与有序集合无关。

C.zlen key - 这个命令不存在,正确的命令应该是zcount key,用于计算有序集合在指定分数范围内的元素数量。

D.zsize key - 这个命令也不存在,正确的命令应该是zcount key,用于计算有序集合在指定分数范围内的元素数量。

综上所述,选项A和B是针对无序集合的命令,选项C和D是错误的命令。实际上,要获取有序集合中元素的个数,应该使用zcard key这个命令。所以正确答案为A。

这篇关于仿论坛项目--Redis,一站式高性能存储方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141200

相关文章

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行