仿论坛项目--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

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程