首页 > 数据库 >Redis实训:社交关注关系存储任务

Redis实训:社交关注关系存储任务

时间:2025-01-18 08:59:29浏览次数:3  
标签:app Redis 用户 jedis 实训 进程 社交 mode

一、实验目的

1.  理解Redis的安装、配置及基本操作。

2.  掌握Redis的不同数据类型及相应操作方法。

3.  学习使用Java客户端连接Redis,并进行数据操作。

4.  实践使用Redis存储社交关注关系的功能。

二、实验环境准备

1.  JAVA环境准备:确保Java Development Kit (JDK) 已安装并配置好环境变量。

2.  Hadoop环境准备:安装并配置Hadoop环境,确保Hadoop的各个组件可以在伪分布式模式下运行。

三、实验教材参考

《大数据存储》,谭旭,人民邮电出版社,2022,ISBN 978-7-115-59414-3。

四、实验内容与步骤

1、安装和配置Redis

按照Redis官方配置或适合操作系统的指南,安装和配置了Redis数据库。

安装成功后启动界面如下:

2、验证Java客户端连接

1. 使用Maven或手动导入Jedis库到Java项目中。  

使用Maven构建项目,在pom.xml文件中添加Jedis依赖:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.4.4</version>
</dependency>

2. 编写简单的Java程序,连接到本地Redis服务,并进行简单的读写操作,验证连接成功。

(1)实现代码

package com.example;

import redis.clients.jedis.Jedis;

public class Four_Redis {
    public static void main(String[] args) {
        // 连接到本地Redis服务
        Jedis jedis = new Jedis("192.168.10.200", 6379);

        // 测试连接
        System.out.println("连接成功!Redis服务器状态: " + jedis.ping());

        // 写入数据到Redis
        jedis.set("key1", "Hello, Redis!");

        // 从Redis读取数据
        String value = jedis.get("key1");
        System.out.println("从Redis中获取的值: " + value);

        // 关闭连接
        jedis.close();
    }
}

(2)运行结果

3、实现社交关注关系存储任务

1. 设计并编写Java程序,实现用户关注其他用户的功能。

2. 实现查询某用户关注的用户列表和某用户的粉丝列表的功能。

(1)Java实现代码:

package com.example;
import redis.clients.jedis.Jedis;
import java.util.Set;
public class Four_Redis {

    private final Jedis jedis;

    public Four_Redis() {
        // 连接到本地Redis服务
        this.jedis = new Jedis("192.168.10.200", 6379);
        System.out.println("连接Redis成功: " + jedis.ping());
    }

    // 用户关注其他用户

    public void followUser(String userId, String followUserId) {
        jedis.sadd("user:" + userId + ":following", followUserId); // 当前用户的关注列表
        jedis.sadd("user:" + followUserId + ":followers", userId); // 被关注用户的粉丝列表
    }

    //获取某用户关注的用户列表
    public Set<String> getFollowing(String userId) {
        return jedis.smembers("user:" + userId + ":following");
    }

    // 获取某用户的粉丝列表
    public Set<String> getFollowers(String userId) {
        return jedis.smembers("user:" + userId + ":followers");
    }

    public void close() {
        jedis.close();
    }

    public static void main(String[] args) {
        Four_Redis app = new Four_Redis();

        // 模拟用户关注关系
        app.followUser("张三", "二麻子");
        app.followUser("张三", "三顺子");
        app.followUser("二麻子", "三顺子");
        app.followUser("三顺子", "张三");

        // 获取用户关注的列表
        System.out.println("张三关注的用户: " + app.getFollowing("张三"));
        System.out.println("二麻子关注的用户: " + app.getFollowing("二麻子"));

        // 获取用户的粉丝列表
        System.out.println("三顺子的粉丝: " + app.getFollowers("三顺子"));
        System.out.println("张三的粉丝: " + app.getFollowers("张三"));

        // 关闭连接
        app.close();
    }
}

(2)运行结果

4、连接Redis时报错

报错信息:

DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

Redis正在运行在保护模式下,保护模式默认情况下只允许本地回环接口访问,不允许外部机器直接连接。

方法一:禁用保护模式。

(1)使用命令修改

Shell进入Redis后,执行命令CONFIG SET protected-mode no禁用保护模式,可以执行命令CONFIG REWRITE使更改永久生效。

(2)修改配置文件

打开 Redis 的配置文件,作者的配置文件在/software/redis中,找到protected-mode yes,修改为protected-mode no,保存后重新启动Redis :sudo systemctl restart redis。

方法二:取消Redis占用

ps aux | grep redis查看Redis进程使用。作者这里显示的结果如下

root   3550  0.0  0.2 145412  2108 ?    Ssl  11:27   0:00 redis-server *:6379表示一个运行中的 Redis 服务进程。

root:运行该进程的用户。这里显示的是 root,说明 Redis 是以 root 用户权限启动的(不推荐在生产环境中以 root 用户运行服务,最好用一个专门的用户来运行)。

3550:进程 ID(PID)。每个进程在系统中都有唯一的 PID,可以通过这个数字操作或监控这个进程(比如使用 kill 命令终止进程)。

0.0:该进程的 CPU 使用率(%CPU)。这里显示 0.0%,说明 Redis 当前几乎没有占用 CPU。

0.2:该进程的内存使用率(%MEM)。这里显示 0.2%,说明 Redis 只占用了系统少量内存。

145412:虚拟内存大小(VSZ,单位为 KB)。表示 Redis 服务使用的总虚拟内存量,这包括了被分配但未实际使用的内存。

2108:常驻内存大小(RSS,单位为 KB)。表示 Redis 实际占用的物理内存。

?:TTY(终端)。? 表示这个进程不是由终端直接启动的,而是一个后台服务(守护进程)。

Ssl:进程的状态信息:

S:表示进程处于休眠状态(sleeping)。

s:表示进程是一个会话领导进程。

l:表示进程有多线程(使用 pthread)。

11:27:进程启动的时间。这表明该进程在当天的 11:27 启动。

0:00:该进程累计的 CPU 使用时间。这里表示该进程自启动以来几乎没有消耗 CPU 时间。

redis-server *:6379:进程启动的命令及参数:

redis-server:表示这是 Redis 服务器的主进程。

*:表示 Redis 绑定的网络接口为所有地址(即 0.0.0.0),可以接受来自外部的连接。

6379:表示 Redis 服务监听的端口号,6379 是 Redis 默认端口。

root       3681  0.0  0.0 112824   988 pts/0    R+   11:35   0:00 grep --color=autoredis

显示的是 grep redis 命令本身的进程信息,因为 ps aux 的结果也包含了正在运行的 grep 命令进程。

这里需要关闭Redis进程,并重启服务。

标签:app,Redis,用户,jedis,实训,进程,社交,mode
From: https://blog.csdn.net/m0_75260099/article/details/145219365

相关文章

  • SpringBoot实训实习职业技能管理系统9621h(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学员,教师,工作类型,招聘信息,投简信息,视频类型,实训教学,实训技能,课程名称,教师评价,部门信息,实习,学员打卡开题报告内容一、项目背景与目的随着社会的发展......
  • 【linux合集】redis集群部署
    集群式部署redis介绍:三台机器001、002、003然后再三台机器上面都部署redis_6379、redis_6380做主从,然后三台机器上面做集群1、安装/解压redismkdir-p/data/applications/wgethttps://download.redis.io/releases/redis-5.0.14.tar.gztar-xzf./redis-5.0.14.tar.gzcd......
  • Springboot(五十八)SpringBoot3使用Redisson实现接口的限流功能
    这部分我记录一下我使用redission实现接口限流的全过程。关于自定义注解,请移步《SpringBoot(二十六)SpringBoot自定义注解》一:redission自定义限流注解主要流程对接口实现限流,主要使用了Redisson提供的限流API方法;使用很简单:第一步:声明一个限流器; RRateLimiter rRateLim......
  • 【详解】Redis配置文件详解
    目录Redis配置文件详解1.基本配置1.1绑定地址1.2端口号1.3守护进程模式1.4日志级别1.5日志文件路径2.数据持久化2.1RDB快照2.2AOF日志3.内存管理3.1最大内存限制3.2淘汰策略4.安全配置4.1密码认证4.2访问控制5.高级配置5.1集群模式5.2主......
  • Redis常用指令(详细)
    #Redis常用指令##基础命令###启动与连接```bash#启动Redis服务redis-server#连接Redis客户端redis-cli```###基本操作```bash#检查Redis服务是否运行ping#返回结果:PONG#获取Redis的版本信息info#查看所有键keys*#删除键del<key>#检查键是否存在exists<......
  • Docker 安装 Redis
    目录1、下载镜像文件2、创建实例并启动3、使用redis镜像执行redis-cli命令连接配置文件Docker集群设置1、脚本:创建6份配置文件+启动6份Redis2、建立集群,进入一个master节点【每个节点1个副本】3、测试集群1、连入集群,要加-c2、设置一些值查看有什么不同【重定向......
  • springboot毕设 基于springboot的残障人士社交平台 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,互联网社交平台已成为人们日常生活不可或缺的一部分。然而,对于残障人士而言,现有的社交平台往往存在使用障碍,难以充分满足他们......
  • Redis动态热点数据缓存策略设计
    Redis动态热点数据缓存策略设计1.热点数据识别机制1.1计数器方式@ServicepublicclassHotDataCounter{@AutowiredprivateRedisTemplate<String,Object>redisTemplate;//访问计数publicvoidincrementCounter(Stringkey){Strin......
  • SpringBoot+Redis+消息队列 技术的抢购方案【附有图文+示例代码】
    文章目录SpringBoot+Redis+消息队列技术的抢购方案13.1简单抢购13.2模拟高并下发抢购jmeter工具使用实现13.3数据安全问题加锁synchronized分布式锁13.4消息队列完成抢购【yml配置文件】【实体类】【redis工具类】【队列配置类】【controller】【队列监听器RabbitQM......
  • 如何开启主机上的MongoDB和Redis服务?
    关于您提到的如何开启主机上的MongoDB和Redis服务的问题,我们将为您提供详细的解决方案。MongoDB和Redis是两种广泛使用的NoSQL数据库,分别用于存储结构化数据和缓存数据。确保这些服务正常运行对于提升网站性能至关重要。以下是针对这两种服务的具体操作步骤。开启MongoDB服务......