当前位置: 首页 > news >正文

大数据学习栈记——Redis安装及其使用

本文介绍NoSQL技术:Redis的安装及其使用。操作系统:Ubuntu24.04

Redis介绍

Redis是一个键值(key-value)存储系统,即键值对非关系型数据库,和Memcached类似,目前正在被越来越多的互联网公司采用。Redis作为一个高性能的键值数据库,不仅在很大程度上弥补了memcached这类键值存储的不足,而且在部分场合下可以对关系数据库起到很好的补充作用。Redis提供了Python、Ruby、Erlang、PHP客户端,使用很方便。

Redis支持存储的值(value)类型包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove以及取交集、并集和差集等丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,Redis中的数据都是缓存在内存中的,它会周期性地把更新的数据写入磁盘,或者把修改操作写入追加的记录文件;此外,Redis还实现了主从(master-slave)同步。

Redis安装

方法一是自己下载安装包

下载地址 https://redis.io/downloads/  ,找到下载链接。Redis有很多产品,如Redis Enterprise Software、Redis OSS & Stack、Redis Insight等,而我们要选择的是Redis downloads。然后再选择合适的版本。发现现在可用的redis是7.4版和7.8.4版

方法二是直接使用直接用apt命令进行安装

首先更新APT软件包列表:

sudo apt update

然后使用apt命令安装Redis服务端:

sudo apt install redis-server

启动Redis服务并设置开机启动:

sudo systemctl start redis-server

sudo systemctl enable redis-server

试了一下,启动redis用 sudo service redis start 也可以

验证Redis是否成功安装并运行:

redis-cli ping

如果一切正常,它将返回PONG。

至此,Redis已经安装完成,现在可以执行如下命令开启Redis服务器:

redis-server

这里显示使用apt安装的redis版本是7.0.15

Redis基本命令(shell模式)

我们借助redis客户端来完成redis的相关管理工作。

输入如下命令启动Redis客户端:

redis-cli

客户端连上服务器之后,会显示“127.0.0.1:6379>”的命令提示符信息,表示服务器的IP地址为127.0.0.1,端口为6379。

现在可以执行简单的操作,比如,设置键为”hello”,值为”world”,并且取出键为”hello”时对应的值。执行下列代码:

set hello world

get hello

Redis操作(shell模式)

我们借助redis客户端来完成redis的相关管理工作。Redis是一个键值对(key-value)数据库,value主要支持5种数据类型

  • 字符串 string
  • 哈希 hash
  • 列表list
  • 集合 set
  • 有序集合sorted set

假设有三个表,即Student、Course和SC,三个表的字段(列)和数据如图6-3所示。

Student表:

Redis数据库是以<key,value>的形式存储数据,把三个表的数据存入Redis数据库时,key和value的确定方法如下:

key=表名:主键值:列名

value=列值

例如,把每个表的第一行记录保存到Redis数据中,需要执行的命令如下:

set Student:95001:Sname liyong

set Course:1:Cname database

set SC:95001:1:Grade 92

新增键值对:

set Course:8:Cname algorithm

set Course:8:Ccredit 4

修改键值对:

get Course:8:Cname

set Course:8:Cname Bigdata

get Course:8:Cname

删除键值对:

get Course:8:Cname

del Course:8:Cname

del Course:8:Cname

Redis Java API编程

配置环境

我们继续在”bigdata1”项目中编写操作Redis的Java代码。

参考:

https://m.runoob.com/redis/redis-java.html

https://www.cnblogs.com/sss4/p/16359420.html

先去下面这个网站看看有哪些可用的版本,以及配置文件应该怎么写

https://mvnrepository.com/

输入”redis”后,找到很多包

根据教材,使用的应该是”Jedis”项目,打开该项目

里面有Maven的配置语句,等会儿我们要用

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->

<dependency>

    <groupId>redis.clients</groupId>

    <artifactId>jedis</artifactId>

    <version>5.1.2</version>

</dependency>

在IDEA中,打开pom.xml(在左边的树形菜单中),这个文件是Maven的核心配置文件,将代码复制进去,刷新

测试连接

首先新建一个Redis软件包,由于redis默认只允许从本地连接,还需要在Linux虚拟机上操作

修改/etc/redis/redis.conf

sudo vim /etc/redis/redis.conf

将bind 127.0.0.1 ::1修改为bind 0.0.0.0 ::1 protect-mode为no

新建一个类,测试

package redis;

import redis.clients.jedis.Jedis;

public class TestRedis {
    public static void main(String[] args) {
        //连接Redis 服务
        Jedis jedis = new Jedis("192.168.179.143", 6379);
        // 如果 Redis 服务设置了密码,需要下面这行,没有就不需要
        // jedis.auth("123456");
        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
    }
}

操作5种数据类型

继续编写一个类,测试redis支持的5种数据类型:String、Hash、List、Set、Zset。代码如下:

package redis;

import redis.clients.jedis.Jedis;

import java.util.List;
import java.util.Set;

public class TestRedis2 {
    // 1.创建Jedis客户端
    // 连接Redis 服务
    private Jedis jedis = new Jedis("192.168.179.143", 6379);
    // 如果 Redis 服务设置了密码,需要下面这行,没有就不需要
    // jedis.auth("123456");

    public void testString() {
        // 2.使用Jedis客户端操作String
        jedis.setex("name", 6, "张根");
        String name = jedis.get("name");
        System.out.println(name);
    }

    public void testHash() {
        // 2.使用Jedis客户端操作hash
        jedis.hset("user", "name", "张根");
        jedis.hset("user", "age", "18");
        String name = jedis.hget("user", "name");
        String age = jedis.hget("user", "age");
        System.out.println(name);
        System.out.println(age);
    }

    public void testList() {
        // 2.使用Jedis客户端操作list
        jedis.lpush("userList", "张弢", "张启樵", "张三丰", "张无忌");
        List<String> userList = jedis.lrange("userList", 0, -1);
        for (String user : userList) {
            System.out.println(user);
        }
    }

    public void testSet() {
        // 2.使用Jedis客户端操作集合set
        jedis.sadd("sname", "Martin");
        jedis.sadd("sname", "Jack");
        jedis.sadd("sname", "Tom");
        Set<String> userList = jedis.smembers("sname");
        for (String user : userList) {
            System.out.println(user);
        }
    }

    public void testZset() {
        // 2.使用Jedis客户端操作有序集合Zset
        jedis.zadd("programingLanguages", 1, "C");
        jedis.zadd("programingLanguages", 2, "C++");
        jedis.zadd("programingLanguages", 3, "Java");
        jedis.zadd("programingLanguages", 0, "Python");
        List<String> programingLanguages = jedis.zrange("programingLanguages", 0, -1);
        for (String language : programingLanguages) {
            System.out.println(language);
        }

    }

    public void colseRedis() {
        ;
        // 3.关闭客户端
        jedis.close();
        System.out.println("关闭jedis成功");
    }

    public static void main(String[] args) {
        TestRedis2 tr2 = new TestRedis2();
        tr2.testString();
        tr2.testList();
        tr2.testHash();
        tr2.testSet();
        tr2.testZset();
        tr2.colseRedis();
    }
}

相关文章:

  • MVCC是什么?MVCC的作用是什么?MVCC实现方式有哪些?
  • 批量将多个文件转成压缩包,支持批量设置压缩密码
  • CSI-external-provisioner
  • 从零开始学A2A一:A2A 协议概述与核心概念
  • 人工智能驱动的科研新范式及学科应用研究
  • 【Java学习笔记】Java初级阶段代码规范
  • 基于项目管理的轻量级目标检测自动标注系统【基于 YOLOV8】
  • 打造可控可测的星座网络:IPLOOK低轨通信仿真平台搭建实践
  • 小葱桌面电视版下载_小葱桌面app免费下载最新版
  • 关于 软件开发模型 的分类、核心特点及详细对比分析,涵盖传统模型、迭代模型、敏捷模型等主流类型
  • 2025年常见渗透测试面试题-红队面试宝典下(题目+回答)
  • 谷歌浏览器的开发者模式如何开启及安装教程
  • 关于 驱动开发方法 的详细分类、核心特点及对比分析,涵盖 TDD、MDD、BDD、DDD、ATDD、FDD、PDD 等主流方法
  • MySQL 的 `binlog_format` 是做什么的?
  • [Python基础速成]2-模块与包与OOP
  • 【MySQL】表的增删改查
  • 【HarmonyOS NEXT】多目标产物构建实践
  • Android Studio 中文字大小的单位详解
  • LeetCode 118题解 | 杨辉三角
  • 【Maniskill】训练使用的性能指标
  • 特朗普说克里米亚将留在俄罗斯,泽连斯基:绝不承认
  • 中国太保一季度净赚96.27亿元降18.1%,营收同比下降1.8%
  • 好未来:2025财年收入增长51%,下个财年提高整体盈利能力是首要任务
  • 影子调查丨掉落的喷淋头:太原一7天酒店加盟店消防设施造假迷局
  • 五一节,和人民照相馆一起找回“拍照”的仪式感
  • 美国国务院:鲁比奥将不参加在伦敦举行的乌克兰问题会谈