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

news/2025/4/22 2:33:24

本文介绍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客户端操作Stringjedis.setex("name", 6, "张根");String name = jedis.get("name");System.out.println(name);}public void testHash() {// 2.使用Jedis客户端操作hashjedis.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客户端操作listjedis.lpush("userList", "张弢", "张启樵", "张三丰", "张无忌");List<String> userList = jedis.lrange("userList", 0, -1);for (String user : userList) {System.out.println(user);}}public void testSet() {// 2.使用Jedis客户端操作集合setjedis.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客户端操作有序集合Zsetjedis.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();}
}


https://dhexx.cn/news/show-5496898.html

相关文章

《 C++ 点滴漫谈: 三十三 》当函数成为参数:解密 C++ 回调函数的全部姿势

一、前言 在现代软件开发中&#xff0c;“解耦” 与 “可扩展性” 已成为衡量一个系统架构优劣的重要标准。而在众多实现解耦机制的技术手段中&#xff0c;“回调函数” 无疑是一种高效且广泛使用的模式。你是否曾经在编写排序算法时&#xff0c;希望允许用户自定义排序规则&a…

【KWDB创作者计划】_KWDB部署与使用详细版本

KWDB发展历程 介绍KWDB前&#xff0c;先介绍下KaiwuDB&#xff0c; KaiwuDB 是浪潮控股的数据库企业&#xff0c;该企业提供的KaiwuDB数据库是一款分布式多模数据库产品&#xff0c;主要面向工业物联网、数字能源、车联网、智慧产业等行业领域。 在2024年7月&#xff0c; Kai…

Android WebView深度性能优化方案

一、启动阶段优化 预初始化策略 冷启动优化&#xff1a;在Application或后台线程提前初始化WebView new Thread(() -> {WebView preloadWebView new WebView(getApplicationContext());preloadWebView.loadUrl("about:blank"); }).start();WebView复用池 private…

Missashe考研日记-day20

Missashe考研日记-day20 1 高数 学习时间&#xff1a;2h30min学习内容&#xff1a; 今天当然是刷题啦&#xff0c;做不等式的证明板块的真题&#xff0c;证明题懂的都懂&#xff0c;难起来是真的一点思路都没有&#xff0c;这个板块还没做完&#xff0c;做完再总结题型。 2…

UE5 Chaos :官方文献总结 + 渲染网格体 (Render Mesh) 和模拟网格体 是如何关联的?为什么模拟网格体 可以驱动渲染网格体?

官方文献&#xff1a;https://dev.epicgames.com/community/learning/tutorials/pv7x/unreal-engine-panel-cloth-editor 1. 流程概述 本文档介绍了如何通过面板编辑器&#xff08;Panel Editor&#xff09;在Unreal Engine中生成基于面板的布料资源。流程主要包含从Marvelou…

【NLP】 自然语言处理笔记

NLP的全称是Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向。自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含…

(2)VTK C++开发示例 --- 绘制多面锥体

文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;VTK开发 &#x1f448; 1. 概述 VTK C开发示例程序&#xff1b; 使用C 和VTK绘制一个多面锥体。 环境说明系统ubuntu22.04、windows11cmake3.22、3.2…

python每日一练

题目一 输入10个整数,输出其中不同的数,即如果一个数出现了多次,只输出一次(要求按照每一个不同的数第一次出现的顺序输出)。 解题 错误题解 a list(map(int,input().split())) b [] b.append(a[i]) for i in range(2,11):if a[i] not in b:b.append(a[i]) print(b)但是会…

第七届浙江省大学生网络与信息安全竞赛决赛Unserialize深度解析 1.0

花还会重新开&#xff0c;不同的春来了又来。 - 2025.4.11 0x01 声明 仅作为个人学习使用&#xff0c;仅供参考&#xff0c;欢迎交流 可能是新生赛缘故&#xff0c;突发奇想&#xff0c;想好好梳理此题&#xff0c;顺便写成参考&#xff0c;于是有了这篇文章 当然很多理解可…

记录一次TDSQL网关夯住故障

环境信息&#xff1a; TDSQL-MySQL同城双中心集群&#xff0c;集中式实例&#xff0c;一主三副本&#xff0c;每个中心两个db副本&#xff0c;每个中心一个VIP&#xff0c;V每个IP通过硬件做负载均衡指向该中心两个proxy&#xff0c;操作系统为麒麟v10 arm。 故障描述&#xf…