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

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份