Redis安装和使用(Ubuntu系统)

本节内容包括Redis简介、安装Redis和Redis实例演示等,Redis在Window系统安装教程可参考Redis安装与运行_厦大数据库实验室博客

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

安装Redis

首先登录Linux系统(本教程全部统一使用hadoop用户登录),打开浏览器,访问Redis官网(https://redis.io/)下载安装包redis-3.2.7.tar.gz,或者访问本教程官网的“下载专区”,到“软件”目录下把redis-3.2.7.tar.gz文件下载到本地。下载后的redis-3.2.7.tar.gz文件,保存在“/home/hadoop/下载”目录下。然后,打开一个终端,执行以下命令将Redis解压至“/usr/local/”目录下并重命名:

  1. $ cd ~
  2. $ sudo tar -zxvf ./下载/redis-3.2.7.tar.gz -C /usr/local
  3. $ cd /usr/local
  4. $ sudo mv ./redis-3.2.7 ./redis

然后,执行如下命令把redis目录的权限赋予hadoop用户:

  1. $ sudo chown -R hadoop:hadoop ./redis

接下来,进入“/usr/local/redis”目录,输入以下命令编译和安装Redis:

  1. $ sudo make
  2. $ sudo make install

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

  1. $ cd /usr/local/redis
  2. $ ./src/redis-server

如果有如下图所示的输出,则表示安装成功。

Redis运行成功截图

然后,再新建一个终端,输入如下命令启动Redis客户端:

然后,再新建一个终端,输入如下命令启动Redis客户端:

  1. $ cd /usr/local/redis
  2. $ ./src/redis-cli

如下图所示,客户端连上服务器之后,会显示“127.0.0.1:6379>”的命令提示符信息,表示服务器的IP地址为127.0.0.1,端口为6379。现在可以执行简单的操作,比如,设置键为”hello”,值为”world”,并且取出键为”hello”时对应的值,下图给出了具体的操作效果。

客户端成功连上服务器截图

至此,Redis安装和运行成功,接下来,即可操作Redis数据库。

Redis实例演示

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

Student表


 

Course表

SC表

Redis数据库是以<key,value>的形式存储数据,把三个表的数据存入Redis数据库时,key和value的确定方法如下:
* key=表名:主键值:列名
* value=列值
例如,把每个表的第一行记录保存到Redis数据中,需要执行的命令和执行结果如下图所示。

Redis插入数据

可以执行类似的命令,把三个表所有数据都插入到Redis数据库中。然后,针对这些已经录入的数据,下面将简单演示如何进行增删改查操作。Redis支持5种数据类型,不同数据类型,增删改查可能不同,这里用最简单的数据类型字符串作为演示。

插入数据

向Redis插入一条数据,只需要先设计好key和value,然后用set命令插入数据即可。例如,在Course表中插入一门新的课程“算法”,4学分,操作命令和结果如下图所示。

插入数据

修改数据

Redis并没有修改数据的命令,所以,如果在Redis中修改一条数据,只能采用一种变通的方式,即在使用set命令时,使用同样的key,然后用新的value值来覆盖旧的数据。例如,把刚才新添加的“算法”课程名称修改为“编译原理”,操作命令和结果如下图所示。

修改数据

 

删除数据

Redis有专门删除数据的命令——del命令,命令格式为“del 键”。所以,如果要删除之前新增的课程“编译原理”,只需输入命令“del Course:8:Cname”,如图6-7所示,当输入“del Course:8:Cname”时,返回“1”,说明成功删除一条数据,当再次输入get命令时,输出为空,说明删除成功。

删除数据

查询数据

Redis最简单的查询方式是使用get命令,上面几个操作中都已经使用过get命令,这里不再赘述。

Redis哈希

这里给出一个具体实例。假设要创建一个Redis哈希,名称为“myhash”,里面包含的字段和值的信息如下:
name age course grade
Xiaoming 21 math 98
可以使用HMSET和HMGET命令来创建和查询,如下所示:

127.0.0.1:6379> HMSET myhash name Xiaoming age 21 course math grade 98
OK
127.0.0.1:6379> HMGET myhash name age course grade
1) "Xiaoming"
2) "21"
3) "math"
4) "98"

如果只想设置或者获得一个值,可以使用HSET和HGET。HSET将哈希表key中的字段field的值设为value,HGET获取存储在哈希表key中指定字段field的值。

128.127.0.0.1:6379> HSET myhash grade 88
(integer) 1
127.0.0.1:6379> HGET myhash grade
"88"
127.0.0.1:6379> HGET myhash name
"Xiaoming"

可以使用HDEL命令删除一个或多个哈希表字段,如下所示:

127.0.0.1:6379> HDEL myhash grade
(integer) 1
127.0.0.1:6379> HGET myhash grade
(nil)
127.0.0.1:6379> HMGET myhash name age coure grade
1) "Xiaoming"
2) "21"
3) "math"
4) (nil)
可以使用HEXISTS命令查看哈希表key中,指定的字段是否存在(存在返回1,不存在返回0),如下所示:
127.0.0.1:6379> HEXISTS myhash name
(integer) 1
127.0.0.1:6379> HEXISTS myhash grade
(integer) 0

 

可以使用HGETALL获取在哈希表key中的所有字段和值,如下所示:

127.0.0.1:6379> HGETALL myhash
1) "name"
2) "Xiaoming"
3) "age"
4) "21"
5) "course"
6) "math"

Redis Select命令 

Redis Select命令

Redis Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值,即客户端连接到Redis的时候,默认是使用0号数据库。
Redis Select的命令基本语法如下:

127.0.0.1:6379> SELECT index
128

该命令执行完毕后,总是返回OK。
下面给出具体实例:

127.0.0.1:6379> SET db_number 0   # 默认使用 0 号数据库
OK
127.0.0.1:6379> HGET myhash name   #myhash是前面已经创建好的哈希表
"Xiaoming"
127.0.0.1:6379> SELECT 1    # 使用 1 号数据库
OK
127.0.0.1:6379[1]> GET db_number  # 已经切换到 1 号数据库,注意 Redis 现在的命令提示符多了个 [1]
(nil)
127.0.0.1:6379[1]> SET db_number 1
OK
127.0.0.1:6379[1]> GET db_number
"1"
127.0.0.1:6379[1]> HGET myhash name   # 1号数据库中不存在myhash
(nil)
127.0.0.1:6379[1]> SELECT 3    # 再切换到 3 号数据库
OK
127.0.0.1:6379[3]> GET db_number   # 提示符从 [1] 改变成了 [3]
(nil)
127.0.0.1:6379[3]> SET db_number 3
OK
127.0.0.1:6379[3]> GET db_number
"3"
127.0.0.1:6379[3]> SELECT 0   # 再切换到 0 号数据库
OK
127.0.0.1:6379> GET db_number
"0"
127.0.0.1:6379> HGET myhash name   #myhash是前面已经创建好的哈希表
"Xiaoming"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/311314.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面试八股总结】排序算法(二)

参考资料 &#xff1a;阿秀 一、堆排序 堆排序基本思想是先把数组构造成一个大顶堆(父亲节点大于其子节点)&#xff0c;然后把堆顶(数组最大值&#xff0c;数组第一个元素)和数组最后一个元素交换&#xff0c;这样就把最大值放到了数组最后边。把数组长度n-1,再进行构造堆把剩…

开源AI聊天机器人应用程序模板; WrenAI用AI从数据中获取洞见;模拟多个代理人(agents)之间语言互动的仿真系统;语音数据集标注

✨ 1: gemini-chatbot 使用Next.js构建的开源AI聊天机器人应用程序模板 Gemini-chatbot是一个使用Next.js构建的开源AI聊天机器人应用程序模板。它利用了Vercel AI SDK、Google Gemini以及Vercel KV来提供一个功能丰富、可定制的聊天体验。这个聊天机器人可以支持多种不同的A…

GitHub repository - commits - branches - releases - contributors

GitHub repository - commits - branches - releases - contributors 1. commits2. branches3. releases4. contributorsReferences 1. commits 在这里可以查看当前分支的提交历史。左侧的数字表示提交数。 2. branches 可以查看仓库的分支列表。左侧的数字表示当前拥有的分…

我们试用了6款最佳Appium替代工具,有些甚至比Appium更好

Appium是一款知名的自动化测试工具&#xff0c;用于在iOS、Android和Windows等移动平台上运行测试。就开源移动测试自动化工具而言&#xff0c;虽然替代品有限&#xff0c;但它们确实存在。我们找到了一些优秀的Appium替代品&#xff0c;它们也可以满足自动化测试要求&#xff…

Jenkins上面使用pnpm打包

问题 前端也想用Jenkins的CI/CD工作流。 步骤 Jenkins安装NodeJS插件 安装完成&#xff0c;记得重启Jenkins。 全局配置nodejs Jenksinfile pipeline {agent anytools {nodejs "18.15.0"}stages {stage(Check tool version) {steps {sh node -vnpm -vnpm config…

RabbitMQ消息模型之Simple消息模型

simple消息模型 生产者 package com.example.demo02.mq.simple;import com.example.demo02.mq.util.ConnectionUtils; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection;import java.io.IOException;/*** author Allen* 4/10/2024 8:07 PM* versi…

HDFS的Shell操作

目录 一、进程启停管理 &#xff08;一&#xff09;一键启停脚本 &#xff08;二&#xff09;单进程启停 二、文件系统操作命令 &#xff08;一&#xff09;HDFS文件系统基本信息 1.前置介绍 &#xff08;二&#xff09;命令介绍 1.新旧版本命令介绍 2.创建文件夹 3.…

秋招算法刷题7

20240410 1.接雨水 方法一&#xff0c;动态规划&#xff0c;时间复杂度O&#xff08;n^2&#xff09;&#xff0c;空间复杂度O&#xff08;n&#xff09; public int trap(int[] height) { int nheight.length; if(n0){ return 0; } …

VR紧急情况模拟|V R体验中心加盟|元宇宙文旅

通过VR技术实现紧急情况模拟&#xff0c;提升安全应急能力&#xff01; 简介&#xff1a;面对突发紧急情况&#xff0c;如火灾、地震、交通事故等&#xff0c;正确的反应和应对能够有效减少伤害和损失。为了提高人们在紧急情况下的应急能力&#xff0c;我们借助先进的虚拟现实…

linux项目部署 解决Nginx浏览器刷新出现404,但是不刷新是能够正常请求成功

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 提示&#xff1a;部署成功&#xff0c;访问登录页面登录也成功&#xff0c;强制刷新浏览器报404问题 进入到系统 刷新页面 解决流程 参考如图&#xff0c;再下面添加这条配置信息 location / {try_file…

Qt---控件的基本属性

文章目录 enabled(控件可用状态)geometry(位置和尺寸)简单恶搞程序 windowIcon(顶层 widget 窗口图标)使用 qrc 机制 windowOpacity(窗口的不透明值)cursor(当鼠标悬停空间上的形状)自定义鼠标图标 toolTip(鼠标悬停时的提示)focusPolicy(控件获取焦点的策略)styleSheet(通过CS…

算法练习第15天|226.翻转二叉树

226.翻转二叉树 力扣链接https://leetcode.cn/problems/invert-binary-tree/description/ 题目描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&am…

EDI是什么:EDI系统功能介绍

EDI全称Electronic Data Interchange&#xff0c;中文名称是电子数据交换&#xff0c;也被称为“无纸化贸易”。EDI实现企业间&#xff08;B2B&#xff09;自动化通信&#xff0c;帮助贸易伙伴和组织完成更多的工作、加快物流时间并消除人为错误。 目前国内企业实现EDI通信大多…

智慧公厕系统厂家,打造创新性智慧公厕的窍门

智慧公厕系统是利用物联网、大数据、云计算、网络通信、自动化控制等技术&#xff0c;监测公厕内部多个方面的变化&#xff0c;从而实现公厕的智能化管理。通过智慧公厕云管理平台&#xff0c;可以实现厕位空余智能引导、环境监测、资源消耗监测、安全防范管理等多种功能&#…

创建spring项目

新建spring项目时&#xff0c;而Spring3.X版本不支持JDK8&#xff0c;JDK11&#xff0c;最低支持JDK17。当JDK版本低于17时&#xff0c;选择2.x的版本。无法选择2.x的版本&#xff0c;可从pom.xml处修改。

mybatis后,将代码生成器生成的代码合并到原有的项目中去

【明白了解&#xff1a; 1&#xff09;接口只定义方法&#xff0c;&#xff08;告诉你要做什么&#xff09; 2&#xff09;具体的逻辑都写在Impl 实现类里】 3&#xff09;【不是问题 &#xff0c; idea2023对界面进行了优化&#xff0c;变好看了 】 一、鱼皮操作 1.1拖拽…

<计算机网络自顶向下> CDN

视频服务挑战 规模性异构性&#xff1a;不同用户有不同的能力&#xff08;比如有线接入和移动用户&#xff1b;贷款丰富和受限用户&#xff09;解决方法是&#xff1a;分布式的应用层面的基础设施CDN 多媒体&#xff1a;视频 视频是固定速度显示的一系列图像的序列&#xff…

优惠券布局的最终方案------css属性mask

先贴图&#xff1a; 以上这些都是通过mask去实现出来&#xff1a; <!DOCTYPE html><html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&g…

如何将PHP的Webman框架打包成二进制文件运行

看了看webman的官方文档&#xff0c;发现居然还能打包为二进制&#xff0c;这样太厉害了吧&#xff01; 先执行这个 composer require webman/console ^1.2.24 安装这个console的包&#xff0c;然后 执行 php webman build:bin 8.1 结果谁想到它报错提示&#xff1a; 好…

清明三天,用Python赚了4万?

每年4月&#xff0c;是Python圈子里接私活的旺季&#xff0c;特别是在节假日这种数据暴增的时间段&#xff0c;爬虫采集、逆向破解类的私活订单会集中爆发&#xff0c;量大价高。几乎所有的圈内人都在趁着旺季接私活。 正好&#xff0c;我昨天就做了一单爬虫逆向私活&#xff…