Redis的五种数据类型与命令
目录
引言
一 Redis的特性
二 Redis的安装
三 Redis的优点
四 Redis的五种数据类型与命令
五 Redis的配置文件
引言
Redis是什么? Remote Dictionary Service(远程字典服务器)
Redis 是一个开源的(BSD许可)的,C语言编写的,高性能的数据结构存储系统,它可以用作数据库,缓存和消息中间件。它基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一。
官方网站:Redis - The Real-time Data Platform
关系型数据库:支持表结构
非关系型数据库:不是以表结构存储数据
NoSQL,指的是 ‘非关系型数据库’, ‘NoSQL有时也称作Not Only SQL的缩写’
NoSQL数据库主要有以下四类,这些类别中的每一个都有其独特的属性和局限性:
基于键值对 key-value类型:Redis, memcached
列存储数据库 Column-oriented Graph: HBase
图形数据库 Graph based: Neo4j
文档型数据库: MongoDB
MongoDB是一个基于分布式文件存储的数据库,主要用来处理大量的文档。
一 Redis的特性
Redis与其他key-value缓存产品有以下三个特点:
1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3.Redis支持数据的备份,即master-slave模式的数据备份。
二 Redis的安装
以Linux为例:
1.redis官网上下载最新安装包到家目录
Redis 全版本文件地址:Index of /releases/,在其后加上带版本号的包名即可,比如:http://download.redis.io/releases/redis-7.2.4.tar.gz。
通过以下命令下载压缩包
wget http://download.redis.io/releases/redis-7.2.4.tar.gz
2.解压压缩包,然后会在家目录下面生成一个对应文件夹redis-7.2.4。
tar zxvf redis-7.2.4.tar.gz
3.进入到解压后的目录redis-7.2.4中,然后执行下述命令。
cd redis-7.2.4
make
sudo make install
4.进入到utils目录
cd utils
5.接着进入到install_server.sh文件,注释掉下面的内容(大约在77行,有8行,shell的注释是以#进行的注释) 注释之后,保存退出并执行下面命令。
sudo ./install_server.sh
6.之后一直点Enter键
7.检查安装成功后的命令行
redis-cli
# 显示结果如下
127.0.0.1:6739>
ping
# 返回一个PONG
三 Redis的优点
1.性能高 读11w/s 写8.1w/s
2.具有丰富的数据类型(五大数据类型)
3.原子的 操作是原子的,但是redis事务是不支持原子的。
4.丰富的特性,支持发布订阅,通知,支持key过期。
四 Redis的五种数据类型与命令
首先输入 redis-cli
1.string类型
#设置命令
set key value
set k1 100
set k3 300#获取key值
get k1
get k3#一次性设置多个值
mset k11 11 k12 12 k13 helloworld k14 12.3
#一次性获取多个值
mget k11 k12 k13 k14#获取字符串的子串 -1表示倒数第一个
GETRANGE k13 0 1
GETRANGE k13 2 5
GETRANGE k13 0 -1#设置字符串的字串
SETRANGE k13 0 wu#在获取的同时进行修改
getset k1 hello#在设置值的同时 加上过期时间 比如将值设为3000 过期时间20s
setex k1 20 3000#累加
INCR k1 #每次加1个
INCRBY key + 值 #每次可以增加指定的值
2.list数据类型
# LPUSH key value1 value2... RPUSH key value1 value2...
#将一个或多个值插入到头部 尾部 头插法 尾插法
lpush list1 1 2 3 4 5 6 8 9
rpush list2 3 2 1 4 5 6#lpop rpop 在列表两侧删除元素
lpop list1
rpop list1# lrange list1 0 -1 范围查找
lrange list1 0 -1#lset list1 0 888888 修改左边的值
lset list1 0 888888#redis中list是支持下标的(与STL中list不一样)#lindex list1 8 按下标访问
lindex list1 8#删除重复元素(与STL中list中unique不一样,unique需要进行sort)
#LREM list1 5 1 删除掉5个1
LREM list1 5 1#LTRIM list1 1 4 把1-4范围的数据留下来了 TRIM进行修剪
LTRIM list1 1 4#LINSERT list1 before | after 2 200 这里的2是在元素2前面或后面 插入200 并不是下标值
LINSERT list1 before 2 200
3.set数据类型
#添加元素
sadd myset1 1 2 3 1 2 3 4#scard myset1 显示元素数量
scard myset1#smembers myset1 显示元素
smembers myset1#srandmember myset1 number 随机获取number个数
srandmember myset1 3#spop myset1 number 随机选取number个元素 并删除
spop myset1 1#SDIFF key1 key2 出现在key1 不出现在key2的元素
SDIFF myset1 myset2#SINTER key1 key2 求交集
SINTER myset1 myset2#SUNION key1 key2 求并集
SUNION myset1 myset2
4.sorted set 即zset数据类型
将每个元素的前面设置一个double分数(看成是权重)
Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但是分数却是可以重复的。
#向有序集合添加一个或多个成员 或者更新已存在成员的分数
zadd zset1 10 str1 20 str2 30 str2 40 str4#ZCOUNT 计算在有序集合中指定区间分数的成员数
zcout zset1 10 40#ZRANGE 打印数据和分数
ZRANGE zset1 0 1 withscores#保证元素的分数值一致的情况下面 使用ZRANGEBYLEX命令
#后面是范围值 [闭区间 (开区间 大于等于 小于
#ZRANGEBYLEX myset2 - + -表示负无穷 +表示正无穷
zadd myset2 10 k1 10 hello 10 world 10 wangdao
ZRANGEBYLEX myset2 [h [k1 #大于等于h 小于等于k1的字符串#ZCORE 打印指定元素的分数
zscore zset1 str1
5.hash数据类型(重要)
Redis hash 是一个string类型的field(字段) 和value(值)的映射表,hash特别适合用于存储对象
Key-value模式不变,但value是一个键值对
map<key, map<key1, value>>
#string类型可以看成是key-value类型,但是hash可以看成是 key1 -(key2-value)
#map<key, value> map<key1, map<key2, value>>
#set k1 100
#hset hash1 str1 100#一次可以获取或者设置多个值
#key-people
hmset people age 10 sex man
#获取people的age sex
hmget people age sex#hkeys people 获取key
hkeys people
#hvalues people
可以练习一下这些命令
五 Redis的配置文件
最后要给大家介绍的是Redis的配置文件,里面有许多对Redis的配置进行了描述,有兴趣的可以自行阅读一下!
路径:/etc/redis下面会有一个6379.conf
相关文章:
Redis的五种数据类型与命令
目录 引言 一 Redis的特性 二 Redis的安装 三 Redis的优点 四 Redis的五种数据类型与命令 五 Redis的配置文件 引言 Redis是什么? Remote Dictionary Service(远程字典服务器) Redis 是一个开源的(BSD许可)的,C语言编写的,高性能的数…...
RocketMQ的详细讲解(四种mq的对比(activeMq、rabbitmq、rocketmq、kafka))
20240729 RocketMQ1 mq的三大作用 异步、削峰限流、解耦合2. 四种mq的对比(activeMq、rabbitmq、rocketmq、kafka)3 rocketmq特点1. 平台无关2. 能提供什么样的功能 4 rocketMq4.1 broker中的标题,来约束读和写4.2 rocketmq的结构4.3 读和写的…...
除了GPT,还有哪些好用的AI工具?
最强AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 多得很,这20个免费的国产AI工具,打工人必备,除了比chatGPT好用,甚至还可以用来变现…...
04 | 深入浅出索引(上)
此系列文章为极客时间课程《MySQL 实战 45 讲》的学习笔记! 索引的常见模型 可以提供查询效率的数据结构有很多,常见的有三种:哈希表、有序数组、搜索数。 哈希表是一种以 key-value 形式存储的数据结构。输入一个 key,通过固定…...
Linux的yum源安装MySQL5.7
linux的yum源安装MySQL5.7 一、MySQL 1、简介 MySQL 是一种流行的关系型数据库管理系统(RDBMS),由瑞典公司 MySQL AB 开发,后来被 Oracle Corporation 收购。它是一个开源软件,提供了高效、稳定和可靠的数据管理解决…...
基于深度学习的音频自监督学习
基于深度学习的音频自监督学习(Self-Supervised Learning, SSL)是一种利用未标注的音频数据,通过设计自监督任务进行特征学习的方法。这种方法在需要大量标注数据的音频处理任务(如语音识别、情感分析等)中,…...
用uniapp 及socket.io做一个简单聊天app1
####相关的表结构,用的是mysql 用户表(Users) 存储用户的基本信息。 CREATE TABLE Users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(100) NOT NULL,email VARCHAR(100) UNIQUE,created_a…...
在Postman中引用JS库
前言 在做接口测试时,出于安全因素,请求参数需要做加密或者加上签名才能正常请求,例如:根据填写的请求参数进行hash计算进行签名。postman作为主流的接口调试工具也是支持请求预处理的,即在请求前使用JavaScript脚本对…...
学习笔记-系统框图简化求传递函数公式例题
简化系统结构图求系统传递函数例题 基础知识回顾 第四讲 控制系统的方框图 (zhihu.com) 「自控原理」2.3 方框图的绘制及化简_方框图化简-CSDN博客 自动控制原理笔记-结构图及其等效变换_结构图等效变换-CSDN博客 例子一 「自控原理」2.3 方框图的绘制及化简_方框图化简-CS…...
postgrsql——事务概述
事务概述 事务的特性 原子性(Atomicity): 事务被视为一个整体,其中的操作要么全部执行成功,要么全部不执行,即不存在部分执行的情况。这确保了事务的完整性和一致性。一致性(Consistency&…...
1.Spring Boot 简介(Spring MVC+Mybatis-plus)
文章目录 一,Spring Boot 简介二,搭建springboot项目并整合mybatis-plus框架1.pom导依赖2.添加启动项3.配置文件.yml 三,springboot集成 Spring MVC1.springmvc定义2.应用注解 一,Spring Boot 简介 SpringBoot是Spring的子工程(或…...
《计算机网络》(学习笔记)
目录 一、计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络的概念 1.1.2 计算机网络的组成 1.1.3 计算机网络的功能 1.1.4 电流交换、报文交换和分组交换 1.1.5 计算机网络的分类 1.1.6 计算机网络的性能指标 1.2 计算机网络体系结构与参考模型 1.2.1 计算机…...
指针函数和函数指针
函数名在表达式中应该如何被解读?答:函数名可以在表达式中被解读成“指向该函数的指针”。 函数指针和指针函数有什么区别?答:函数指针是一个指向函数的指针;指针函数是一个返回指针变量的函数。 一个函数能否有时候…...
Elasticsearch跨集群搜索
Elasticsearch(简称ES)是一种基于Lucene的搜索引擎,以其高性能、可扩展性和实时搜索能力而广受欢迎。在大型分布式系统中,跨集群搜索成为了一个重要的需求,它允许用户从多个Elasticsearch集群中联合查询数据࿰…...
基于FPGA的数字信号处理(19)--行波进位加法器
1、10进制加法是如何实现的? 10进制加法是大家在小学就学过的内容,不过在这里我还是帮大家回忆一下。考虑2个2位数的10进制加法,例如:15 28 43,它的运算过程如下: 个位两数相加,结果为5 8 1…...
树莓派下,centos7操作系统, TensorFlow java版实现植物分类功能
在树莓派上运行CentOS 7,并使用TensorFlow Java版本实现植物分类功能可以通过以下步骤实现。以下是详细的指导: 一、安装和设置环境 1. 更新系统并安装基本工具 确保你的CentOS 7系统是最新的,并安装必要的工具: sudo yum update -y sudo yum install -y wget unzip gi…...
开源一个react路由缓存库
Github仓库 背景 产品希望可以像浏览器那样每打开一个路由,会多一个tab,用户可以切换tab访问之前加载过的页面,且不会重新加载。真就产品一句话…… Github上有轮子了吗 Github上开箱即用的轮子是基于react-router-dom V5实现的ÿ…...
go-kratos 学习笔记(7) 服务发现服务间通信grpc调用
服务发现 Registry 接口分为两个,Registrar 为实例注册和反注册,Discovery 为服务实例列表获取 创建一个 Discoverer 服务间的通信使用的grpc,放到data层,实现的是从uses服务调用orders服务 app/users/internal/data.go 加入 New…...
SPSS个人版是什么软件
SPSS是一款数据统计、分析软件,它由IBM公司出品,这款软件平台提供了文本分析、大量的机器学习算法、数据分析模型、高级统计分析功能等,软件易学且功能非常强大,可以使用SPSS制作图表,例如柱状、饼状、折线等图表&…...
Minos 多主机分布式 docker-compose 集群部署
参考 docker-compose搭建多主机分布式minio - 会bk的鱼 - 博客园 (cnblogs.com) 【运维】docker-compose安装minio集群-CSDN博客 Minio 是个基于 Golang 编写的开源对象存储套件,虽然轻量,却拥有着不错的性能 中文地址:MinIO | 用于AI的S3 …...
Unity + Hybridclr + Addressable + 微信小程序 热更新报错
报错时机: Generate All 怎么All 死活就是报错 生成微信小程序,并启动后 报错内容: MissingMethodException:AoT generic method notinstantiated in aot.assembly:Unity.ResourceManager:dll, 原因: Hybridclr 开发文档 解…...
鸿蒙开发—黑马云音乐之Music页面
目录 1.外层容器效果 2.信息区-发光效果 3.信息区-内容布局 4.播放列表布局 5.播放列表动态化 6.模拟器运行并配置权限 效果: 1.外层容器效果 Entry Component export struct MuiscPage {build() {Column() {// 信息区域Column() {}.width(100%)// .backgroun…...
IsaacLab | 如何在Manipulation任务中添加新的目标(target)
如是我闻: 终于让我给摸索出来了,在这里描述一下问题场景。 假使说我们有一个机械臂操作的任务,这样婶的 Isaac Lab | Push 我们想做多目标的任务,这时候需要向环境中添加第二个目标,像这样 Isaac Lab | Add target 那…...
【Python从入门到进阶】61、Pandas中DataFrame对象的操作(二)
接上篇《60、Pandas中DataFrame对象的操作(一)》 上一篇我们讲解了DataFrame对象的简介、基本操作及数据清洗相关的内容。本篇我们来继续讲解DataFrame对象的统计分析、可视化以及数据导出与保存相关内容。 一、DataFrame的统计分析 在数据分析和处理中…...
Linux(虚拟机)的介绍
Linux介绍 常见的操作系统 Windows:微软公司开发的一款桌面操作系统(闭源系统)。版本有dos,win98,win NT,win XP , win7, win vista. win8, win10,win11。服务器操作系统:winserve…...
CSS(九)——CSS 轮廓(outline)
CSS 轮廓(outline) 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。 轮廓(outline)属性指定元素轮廓的样式、颜色和宽度。 让我们用一个图来看…...
Unity Timeline:构建复杂动画序列的利器
Unity的Timeline是一个强大的动画工具,它允许开发者创建复杂的动画序列,将动画、音频和事件整合到一个统一的时间轴上。Timeline的可视化编辑界面使得动画制作变得更加直观和灵活。本文将介绍Unity Timeline的基本概念、功能以及如何使用它来实现动画。 …...
C# 与C++ cli
cli CLI(Command Line Interface)是一种通过命令行界面与计算机系统进行交互的方式。它提供了一种以文本形式输入命令和接收系统输出的方法,用于执行各种操作和管理计算机系统。以下是CLI的详细解释: 一、定义与基本概念 定义&…...
Linux文件编程--打开及创建
...
Vue3点击按钮实现跳转页面并携带参数
前提:有完整的路由规则 1.源页面 <template><div><h1>源页面</h1><!--通过js代码跳转--><template #default"scope"><button click"toTargetView(scope.row)">点击跳转携带参数</button><…...
探索Linux-1-虚拟机远程登陆XShell6远程传输文件Xftp6
Linux是什么? Linux是一个开源的操作系统内核,由林纳斯托瓦兹(Linus Torvalds)于1991年首次发布。它基于Unix操作系统,但提供了更多的自由和灵活性。Linux内核是操作系统的核心部分,负责管理系统资源、处理…...
SpringBoot中使用监听器
1.定义一个事件 /*** 定义事件* author hrui* date 2024/7/25 12:46*/ public class CustomEvent extends ApplicationEvent {private String message;public CustomEvent(Object source, String message) {super(source);this.message message;}public String getMessage() …...
mybatise全接触-面试宝典-知识大全
1 . 简述什么是Mybatis和原理 ? Mybatis工作原理: (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,加载驱动、创建连接、创建statement等繁杂的过程,开发者…...
Catalyst优化器:让你的Spark SQL查询提速10倍
目录 1 逻辑优化阶段 2.1 逻辑计划解析 2.2 逻辑计划优化 2.2.1 Catalys的优化过程 2.2.2 Cache Manager优化 2 物理优化阶段 2.1 优化 Spark Plan 2.1.1 Catalyst 的 Join 策略 2.1.2 如何决定选择哪一种 Join 策略 2.2 Physical Plan 2.2.1 EnsureRequirements 规则 3 相关文…...
【Hot100】LeetCode—416. 分割等和子集
目录 题目1- 思路2- 实现⭐152. 乘积最大子数组——题解思路 3- ACM 实现 题目 原题连接:416. 分割等和子集 1- 思路 理解为背包问题 思路: 能否将均分的子集理解为一个背包,比如对于 [1,5,11,5],判断能否凑齐背包为 11 的容量…...
前端开发知识-vue
大括号里边放键值对,即是一个对象。 一、vue可以简化前端javascript的操作。 主要特点是可以实现视图、数据的双向绑定。 使用vue主要分为三个步骤: 1.javascript中引入vue.js 可以src中可以是vue的网址,也可以是本地下载。 2.在javasc…...
【嵌入式硬件】快衰减和慢衰减
1.引语 在使用直流有刷电机驱动芯片A4950时,这款芯片采用的是PWM控制方式,我发现他的正转、反转有两种控制方式,分别是快衰减和慢衰减。 2.理解 慢衰减:相当于加在电机(感性原件)两端电压消失,将电机两端正负短接。 快衰减:相当于加在电机(感性原件)两端电压消失,将电机…...
C语言 | Leetcode C语言题解之第275题H指数II
题目: 题解: int hIndex(int* citations, int citationsSize) {int left 0, right citationsSize - 1;while (left < right) {int mid left (right - left) / 2;if (citations[mid] > citationsSize - mid) {right mid - 1;} else {left mi…...
速盾:网络安全和 CDN 之间的关系是怎样的?
网络安全和内容交付网络(CDN)之间有着密切的关系。网络安全主要涉及保护网络和系统免受各种威胁和攻击,而CDN是一种用于提供更快速、高效和可靠的内容交付服务的技术。在当今数字化和云计算时代,网络安全和CDN之间的关系变得更加紧…...
数据库安全:MySQL安全配置,MySQL安全基线检查加固
「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需要知道MySQL的安全基线标准和加固方式。 MySQL基线检查 1、更新…...
【SpringBoot】参数传递
1.定义URL变量 RequestMapping("/user/{username}") ResponseBody public String userProfile(PathVariable String username){ return "user:"username; } 2.定义多个URL变量 RequestMapping("/user/{username}/blog/{blogId}") Response…...
Unity 骨骼动画(Skinned Mesh Renderer): 角色动画的高级渲染
在Unity中,骨骼动画(Skinned Mesh Renderer)是一种用于高级角色动画渲染的组件。它允许开发者将复杂的3D模型和动画应用到游戏角色上,实现逼真的视觉效果。本文将探讨Skinned Mesh Renderer的基本概念、使用方法以及如何优化性能。 Skinned Mesh Render…...
花几千上万学习Java,真没必要!(三十四)
1、泛型类: 测试代码: 创建一个Box类; package settest.com; public class Box<T> { // T stands for "Type" - T是一个占位符,用于表示具体的类型 // 类的内部可以使用T作为类型声明变量 private T t; // 构造方法&am…...
【代码】Python3|Scrapy框架初探(汽车之家大连市二手车车辆数据爬取、清洗与可视化)
本篇主要是整个项目的介绍,没提到太多琐碎的技术细节,以后有空的话会整理一下 Scrapy 和原生爬虫的差异,还有它坑人的一些地方,单发出来。 开源地址:https://github.com/shandianchengzi/car_home_spider 使用说明&a…...
C#中的new以及类
new关键字的用法 实例化对象:使用 new 关键字可以创建一个类的实例。例如: MyClass obj new MyClass(); 指定构造函数:如果类有多个构造函数,可以使用 new 关键字指定使用哪一个构造函数来创建对象。例如: MyC…...
Hbase简介和快速入门
一 Hbase简介 1 HBase定义 Apache HBase™ 是以hdfs为数据存储的,一种分布式、可扩展的NoSQL数据库。 2 HBase数据模型 HBase的设计理念依据Google的BigTable论文,论文中对于数据模型的首句介绍。Bigtable 是一个稀疏的、分布式的、持久的多维排序map…...
【AI落地应用实战】Amazon Bedrock +Amazon Step Functions实现链式提示(Prompt Chaining)
一、链式提示 Prompt Chaining架构 Prompt Chaining 是一种在生成式人工智能(如大型语言模型)中广泛使用的技术,它允许用户通过一系列精心设计的提示(Prompts)来引导模型生成更加精确、丰富且符合特定需求的内容。 P…...
vue Ref 和 Reactive 原理解析
文章目录 RefReactive Ref ref 的语义是指向一个值的引用,主要用于处理基本数据类型和单一值对象,即对值的引用进行包装和管理,而不是对对象的操作进行拦截,对于基础类型通过 getter 和 setter 实现拦截使用 Proxy 拦截对象的所有…...
【人工智能】Transformers之Pipeline(六):图像分类(image-classification)
目录 一、引言 二、图像分类(image-classification) 2.1 概述 2.2 技术原理 2.3 应用场景 2.4 pipeline参数 2.4.1 pipeline对象实例化参数 2.4.2 pipeline对象使用参数 2.4 pipeline实战 2.5 模型排名 三、总结 一、引言 pipeline&#x…...
编程语言漫谈之「初始化与赋值」——以C++和汇编语言为示例
编程语言漫谈之「初始化与赋值」——以C和汇编语言为示例 1. 赋值时汇编做了什么2. 在变量定义时做初始化, 与在使用时才进行初始化, 有区别吗? 1. 赋值时汇编做了什么 当我们在C中写下如下代码: int main() {int a 10;return 0; }这是一个简单的整数类型变量a的初始化赋值…...