Redis(基础指令和五大数据类型)

文章目录

    • 1.基本介绍
        • 1.多种数据结构支持
        • 2.应用场景
    • 2.Redis安装(直接安装到云服务器)
        • 1.安装gcc
          • 1.yum安装gcc
          • 2.查看gcc版本
        • 2.将redis6.2.6上传到/opt目录下
        • 3.进入/opt目录下然后解压
        • 4.进入 redis-6.2.6目录
        • 5.编译并安装
        • 6.进入 /usr/local/bin 查看是否有redis的命令
    • 3.启动并使用redis
        • 1.进入 /opt/redis-6.2.6/
        • 2.将里面的redis.conf复制一份到/etc下
        • 3.编辑 /etc/redis.conf,将daemonize no修改成daemonize yes即以守护进程的方式启动(后台启动)
        • 3.启动redis,指定刚才的配置文件
        • 4.检查redis是否启动
          • 1.通过查看进程的方式,可以看到在6379端口监听
          • 2.通过查看端口监听状态的方式
        • 5.既然已经在6379端口监听了,就将这个端口开放,方便以后访问
          • 1.腾讯云开启6379端口
          • 2.宝塔开启6379端口
        • 6.客户端访问和关闭redis
          • 1.执行/usr/local/bin的redis-cli 指令会默认连接6379端口,也可以指定端口,如下
          • 2.关闭redis(还是在bin目录下)
            • 1.关闭6379端口的redis
            • 2.指定端口关闭redis
            • 3.在redis命令行的关闭方式
            • 4.退出命令行:quit
    • 4.redis指令
        • 1.指令文档
        • 2.基础操作
          • 1.set和get基本操作(默认就是字符串,除非有空格否则可以不加双引号)
          • 2.如果key已经存在,则会覆盖原来的值(跟HashMap很像)
          • 3.输入clear清屏
          • 4.quit/exit 退出命令行,数据依然在
          • 5.help + 命令 获取帮助文档
        • 3.对key操作的指令
          • 1.keys:列出所有的key
          • 2.keys:列出以1结尾的key
          • 3.exists:判断某个key是否存在,返回1存在,返回0不存在
          • 4.type:判断key的类型
          • 5.del:删除指定的key,成功返回1
          • 6.unlink:异步删除key,不阻塞
          • 7.关于key的过期时间
            • 1.expire key 100:设置key时指定过期时间为100s
            • 2.ttl:查看key还有多少秒过期,-1永不过期,-2表示过期
        • 4.对DB的操作(redis默认有16个库0-15)
          • 1.select 1 切换到1号库
          • 2.dbsize 查看当前库key的数量
          • 3.flushdb 清空当前库
          • 4.flushall 清空所有库(谨慎)
    • 5.Redis五大数据类型
        • 1.官方文档
        • 2.数据类型
        • 3.string类型
          • 1.append 追加字符到string后面,返回总的字符串长度
            • 1.key存在的情况,直接追加
            • 2.key不存在的情况,就相当于set了
          • 2.strlen 获得值的长度
          • 3.setnx 只有在key不存在的情况才设置key,成功返回1
          • 4.incr 为key存储的数字值+1,如果key不存在则直接设置为1
          • 5.decr 为key存储的数字值-1,如果key不存在则直接设置为-1
          • 6.在incrby 和 decrby 的可以设置步长
          • 7.m 批量设置k-v,具有原子性,一个失败则全部失败
            • 1.mset 批量set
            • 2.mget 批量get
            • 3.msetnx 批量setnx,有一个失败则全部失败
          • 8.getrange 获取key指定部分的值,是闭区间,-1表示最后一个值,-2是倒数第二个
          • 9.setrange 设置key指定部分的值,是闭区间,-1表示最后一个值,-2是倒数第二个
          • 10.setex 设置值的时候同时设置过期时间
          • 11.getset 设置值的同时得到原来的值
        • 6.list类型
          • 1.列表类型底层是双向链表
          • 2.lpush,rpush 向左边或右边插入一个或多个值
            • 1.注意:如果是左边插入的是a,b,c则实际上是c,b,a
          • 3.lrange 查看list的元素,0代表第一个,-1代表最后一个,-2代表倒数第二个,0 -1 则代表所有
          • 4.lpop,rpop从左边或者右边吐出一个值
          • 5.rpoplpush key1列表右边吐出一个值,插入到key2列表的左边
          • 6.lindex 按照下标返回数据
          • 7.llen 获得列表长度
          • 8.linsert 向一个值的前面或者后面插入一个元素
          • 9.lrem 从左边删除n个value
          • 10.list最佳实践
            • 1.系统通知,按照时间顺序展示
            • 2.在这里如果使用lpush,则取出时,会先取出最近加入的消息
        • 7.set
          • 1.基本介绍
          • 2.sadd 向集合中加入一个或多个元素
          • 3.smembers 取出该集合的所有元素(与加入顺序不一定相同)
          • 4.sismember 判断集合中是否有某个元素
          • 5.scard 判断当前集合中有几个元素
          • 6.srem 删除集合中的某个元素
          • 7.spop 随机吐出集合中的一个元素
          • 8.srandmember 随机取出n个值
          • 9.smove 把集合中的一个元素移动到另一个集合中
          • 10.sinter 返回两个集合的交集
          • 11.ssuion 返回两个集合的并集
          • 12.sdiff 返回两个集合的差集
        • 8.hash
          • 1.基本介绍
          • 2.hset 添加一个或多个键值对,如果key已经存在,就在这个基础上添加
          • 3.hget 获取key对应的field的value,如果没有该field则返回null
          • 4.hmget 批量获取key对应的field的value
          • 5.hexists 查看field是否存在
          • 6.hkeys 查看该key对应的所有field
          • 7.hvals 查看该key对应的所有value
          • 8.hincrby 对value进行加减操作
          • 9.hsetnx 将hash表中key的域field的值设置为value,当且仅当field不存在
        • 9.zset(有序集合)
          • 1.基本介绍
          • 2.zadd 添加一个或多个zset
          • 3.zrange 按照下标来取出元素(默认按照score从小到大排序)
          • 4.zrevrange 按照下标取出元素(逆序)
          • 5.在后面添加 withscores则与score一起返回
          • 6.zscore 查看某个value的排序码
          • 7.zrangebyscore 根据分数从小到大取出指定范围的元素,下标从1开始
          • 8.zrevrangebyscore 根据分数从大到小取出指定范围的元素,先写max再写min
          • 9.zincrby 为key的成员加上增量
          • 10.zrem 删除某个元素
          • 11.zcount 根据分数统计数量
          • 12.zrank 返回value的索引

1.基本介绍

1.多种数据结构支持

image-20240428154346590

2.应用场景

image-20240428154413968

2.Redis安装(直接安装到云服务器)

1.安装gcc
1.yum安装gcc
yum install gcc
2.查看gcc版本
gcc --version

image-20240428155648393

2.将redis6.2.6上传到/opt目录下
3.进入/opt目录下然后解压
tar -zxvf redis-6.2.6.tar.gz

image-20240428160424891

4.进入 redis-6.2.6目录
cd redis-6.2.6

image-20240428160526289

5.编译并安装
make && make install

image-20240428160715624

6.进入 /usr/local/bin 查看是否有redis的命令
cd /usr/local/bin

image-20240428160808050

3.启动并使用redis

1.进入 /opt/redis-6.2.6/
cd /opt/redis-6.2.6/

image-20240428161146017

2.将里面的redis.conf复制一份到/etc下
cp redis.conf /etc/redis.conf
3.编辑 /etc/redis.conf,将daemonize no修改成daemonize yes即以守护进程的方式启动(后台启动)
vim /etc/redis.conf

image-20240428161520788

3.启动redis,指定刚才的配置文件
/usr/local/bin/redis-server /etc/redis.conf

image-20240428161700311

4.检查redis是否启动
1.通过查看进程的方式,可以看到在6379端口监听
ps -aux | grep redis

image-20240428161828989

2.通过查看端口监听状态的方式
netstat -anp | more

image-20240428161956925

5.既然已经在6379端口监听了,就将这个端口开放,方便以后访问
1.腾讯云开启6379端口

image-20240428162229640

2.宝塔开启6379端口
firewall-cmd --permanent --add-port=6379/tcp && firewall-cmd --reload && firewall-cmd --query-port=6379/tcp

image-20240428162620315

6.客户端访问和关闭redis
1.执行/usr/local/bin的redis-cli 指令会默认连接6379端口,也可以指定端口,如下
redis-cli -p 6379

image-20240428162941539

2.关闭redis(还是在bin目录下)
1.关闭6379端口的redis
redis-cli shutdown
2.指定端口关闭redis
redis-cli -p 6379 shutdown
3.在redis命令行的关闭方式
shutdown
4.退出命令行:quit

image-20240428163339461

4.redis指令

1.指令文档

https://www.redis.net.cn/tutorial/3506.html

2.基础操作
1.set和get基本操作(默认就是字符串,除非有空格否则可以不加双引号)

image-20240428164250774

2.如果key已经存在,则会覆盖原来的值(跟HashMap很像)

image-20240428164629652

3.输入clear清屏
4.quit/exit 退出命令行,数据依然在
5.help + 命令 获取帮助文档

image-20240428164818419

3.对key操作的指令
1.keys:列出所有的key
keys *
2.keys:列出以1结尾的key
keys *1

image-20240428165044144

3.exists:判断某个key是否存在,返回1存在,返回0不存在

image-20240428165531907

4.type:判断key的类型

image-20240428165609934

5.del:删除指定的key,成功返回1

image-20240428165717582

6.unlink:异步删除key,不阻塞

image-20240428170234724

7.关于key的过期时间
1.expire key 100:设置key时指定过期时间为100s

image-20240428170936492

2.ttl:查看key还有多少秒过期,-1永不过期,-2表示过期

image-20240428171108534

4.对DB的操作(redis默认有16个库0-15)
1.select 1 切换到1号库

image-20240428171431723

2.dbsize 查看当前库key的数量

image-20240428171527597

3.flushdb 清空当前库

image-20240428171619903

4.flushall 清空所有库(谨慎)

5.Redis五大数据类型

1.官方文档

https://www.redis.net.cn/tutorial/3501.html

2.数据类型

image-20240428172039784

3.string类型
1.append 追加字符到string后面,返回总的字符串长度
1.key存在的情况,直接追加

image-20240428172731884

2.key不存在的情况,就相当于set了

image-20240428172919001

2.strlen 获得值的长度

image-20240428173016395

3.setnx 只有在key不存在的情况才设置key,成功返回1

image-20240428173125410

4.incr 为key存储的数字值+1,如果key不存在则直接设置为1

image-20240428173705393

5.decr 为key存储的数字值-1,如果key不存在则直接设置为-1

image-20240428173818067

6.在incrby 和 decrby 的可以设置步长

image-20240428174132747

7.m 批量设置k-v,具有原子性,一个失败则全部失败
1.mset 批量set

image-20240428174357811

2.mget 批量get

image-20240428174426295

3.msetnx 批量setnx,有一个失败则全部失败

image-20240428174715318

8.getrange 获取key指定部分的值,是闭区间,-1表示最后一个值,-2是倒数第二个

image-20240428175314785

9.setrange 设置key指定部分的值,是闭区间,-1表示最后一个值,-2是倒数第二个

image-20240428175813351

10.setex 设置值的时候同时设置过期时间

image-20240428192746792

11.getset 设置值的同时得到原来的值

image-20240428193137535

6.list类型
1.列表类型底层是双向链表

image-20240428193609477

2.lpush,rpush 向左边或右边插入一个或多个值
1.注意:如果是左边插入的是a,b,c则实际上是c,b,a

image-20240429092331821

3.lrange 查看list的元素,0代表第一个,-1代表最后一个,-2代表倒数第二个,0 -1 则代表所有

image-20240429092536345

4.lpop,rpop从左边或者右边吐出一个值

image-20240429092829028

5.rpoplpush key1列表右边吐出一个值,插入到key2列表的左边

image-20240429093938230

6.lindex 按照下标返回数据

image-20240429094059991

7.llen 获得列表长度

image-20240429094203021

8.linsert 向一个值的前面或者后面插入一个元素

image-20240429094641682

9.lrem 从左边删除n个value

image-20240429095004563

10.list最佳实践
1.系统通知,按照时间顺序展示

image-20240429095324457

2.在这里如果使用lpush,则取出时,会先取出最近加入的消息

image-20240429095403727

7.set
1.基本介绍

set可以自动排重,并且是无序的,跟HashSet差不多

2.sadd 向集合中加入一个或多个元素

image-20240429100248735

3.smembers 取出该集合的所有元素(与加入顺序不一定相同)

image-20240429100339106

4.sismember 判断集合中是否有某个元素

image-20240429100600514

5.scard 判断当前集合中有几个元素

image-20240429100656645

6.srem 删除集合中的某个元素

image-20240429101015488

7.spop 随机吐出集合中的一个元素

image-20240429101116975

8.srandmember 随机取出n个值

image-20240429101223351

9.smove 把集合中的一个元素移动到另一个集合中

image-20240429101529175

10.sinter 返回两个集合的交集

image-20240429101845533

11.ssuion 返回两个集合的并集

image-20240429101922836

12.sdiff 返回两个集合的差集

image-20240429101951441

8.hash
1.基本介绍

image-20240429102117242

image-20240429102215553

2.hset 添加一个或多个键值对,如果key已经存在,就在这个基础上添加

image-20240429103207011

image-20240429103527866

3.hget 获取key对应的field的value,如果没有该field则返回null

image-20240429103303474

4.hmget 批量获取key对应的field的value

image-20240429103404402

5.hexists 查看field是否存在

image-20240429103833193

6.hkeys 查看该key对应的所有field

image-20240429103855363

7.hvals 查看该key对应的所有value

image-20240429104050371

8.hincrby 对value进行加减操作

image-20240429104633593

image-20240429104832755

9.hsetnx 将hash表中key的域field的值设置为value,当且仅当field不存在

image-20240429105052304

9.zset(有序集合)
1.基本介绍

image-20240429105457378

2.zadd 添加一个或多个zset

image-20240429110138349

3.zrange 按照下标来取出元素(默认按照score从小到大排序)

image-20240429110342417

4.zrevrange 按照下标取出元素(逆序)

image-20240429110602925

5.在后面添加 withscores则与score一起返回

image-20240429110847059

6.zscore 查看某个value的排序码

image-20240429111012035

7.zrangebyscore 根据分数从小到大取出指定范围的元素,下标从1开始

image-20240429111340058

8.zrevrangebyscore 根据分数从大到小取出指定范围的元素,先写max再写min

image-20240429111720954

9.zincrby 为key的成员加上增量

image-20240429112306187

10.zrem 删除某个元素

image-20240429112533235

11.zcount 根据分数统计数量

image-20240429112647815

12.zrank 返回value的索引

image-20240429112739729

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

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

相关文章

智慧文旅开启沉浸式文化体验,科技让旅行更生动:借助智慧技术,打造沉浸式文化体验场景,让旅行者在旅行中深度感受文化的魅力

一、引言 随着科技的飞速发展,传统旅游行业正经历着前所未有的变革。智慧文旅,作为一种新兴的旅游模式,正以其独特的魅力,吸引着越来越多的旅行者。智慧文旅不仅改变了人们的旅行方式,更在深度上丰富了人们的文化体验…

Spring入门及注解开发

1 引言 自定义注解可以用来为代码添加元数据信息,简化配置,提高代码的可读性和可维护性。通过自定义注解,可以实现自定义的业务逻辑、约束条件、配置参数等功能。在Spring中,自定义注解常用于标记组件、配置依赖注入、AOP切面等。 自定义注解可以添加元数据信息,低代码框…

关于图形库

文章目录 1. 概念介绍2. 使用方法2.1 普通路由2.2 命名路由 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get显示Dialog"相关的内容,本章回中将介绍使用get进行路由管理.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

AEC Capital Limited:开启可持续金融新纪元

在当今社会,环保和可持续发展已成为全球关注的焦点。在这个背景下,AEC Capital Limited作为香港的一家金融服务公司,以其专业、高端的服务和创新的理念,成为可持续金融领域的引领者。我们致力于将环境保护与金融服务相结合&#x…

观测与预测差值自动变化系统噪声Q的自适应UKF(AUKF_Q)MATLAB编写

简述 基于三维模型的UKF,设计一段时间的输入状态误差较大,此时通过对比预测的状态值与观测值的残差,在相应的情况下自适应扩大系统方差Q,构成自适应无迹卡尔曼滤波(AUKF),与传统的UKF相比&…

mac监听 linux服务器可视化(Grafana+Promethus+Node_exporter)

Grafana和promethus(普罗米修斯)的安装和使用 监控系统的Prometheus类似于一个注册中心,我们可以只需要配置一个Prometheus,而在其他服务器,只需要安装node_exporter,它们的数据流转就是通过exporter采集数据信息,然后告诉prometheus它的位置…

华为二层交换机与路由器连通上网实验

华为二层交换机与路由器连通上网实验 二层交换机是一种网络设备,用于在局域网(LAN)中转发数据帧。它工作在OSI模型的第二层,即数据链路层。二层交换机通过学习和维护MAC地址表,实现了数据的快速转发和广播域的隔离。 实…

CGAL 网格简化

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 为了提高网格处理的效率,通常需要将过于冗长的3D数据集简化为更简洁而又真实的表示。尽管从几何压缩到逆向工程有许多应用,但简洁地捕捉表面的几何形状仍然是一项乏味的任务。CGAL中则为我们提供了一种通过变分几…

基于LLama3、Langchain,Chroma 构建RAG

概要: 使用Llama3 Langchain和ChromaDB创建一个检索增强生成(RAG)系统。这将允许我们询问有关我们的文档(未包含在训练数据中)的问题,而无需对大型语言模型(LLM)进行微调。在使用RA…

assert函数详解

assert函数详解 1.函数概述2.assert函数一般用法3.assert函数的一些使用案例3.1判断大小3.2strlen函数的模拟实现3.3其它 4.注意 1.函数概述 评价一个表达式,当表达式错误时,输出一个诊断信息并且终止程序 assert是一个宏,在使用之前要调用库…

[Meachines][Hard]Napper

Main $ nmap -p- -sC -sV 10.10.11.240 --min-rate 1000 $ curl http://10.10.11.240 $ gobuster dir -u "https://app.napper.htb" -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-small-words-lowercase.txt -k 博客 $ ffuf -c -w /usr/share/se…

BUUCTF---misc---菜刀666

1、下载附件,在wireshark中分析 2、题目说是菜刀,联想到http协议的post方法 3、使用命令过滤 http.request.methodPOST 4、打开数据包,发现有个不一样 这里面有一大串的数据包 5、追踪http数据流,发现z2后面是一个jpg文件的文件…

中仕公考:哪些情况不能考公务员?

1.年龄不符合 主要分两类【一类是未成年人,另一类是超龄人员】 具体来讲:年龄一般为18周岁以上、35周岁以下 (2024国考标准是1987年10月至2005年10月期间出生) 对于2024年应届硕士、博士研究生(非在职人员)放宽到40周岁以下(2024国考标准是1982年10月以后…

GitHub Desktop安装与使用教程

GitHub Desktop 是GitHub公司推出的一款桌面应用程序,旨在帮助开发人员更轻松使用GitHub。它提供了一个直观的用户界面,允许用户通过图形化界面来执行常见的 Git 操作,如克隆仓库、创建分支、提交更改、合并代码等。 GitHub Desktop 的设计使…

Spring - 7 ( 13000 字 Spring 入门级教程 )

一:Spring Boot 日志 1.1 日志概述 日志对我们来说并不陌生,我们可以通过打印日志来发现和定位问题, 或者根据日志来分析程序的运行过程,但随着项目的复杂度提升, 我们对日志的打印也有了更高的需求, 而不仅仅是定位排查问题 比如有时需要…

基于JSP的酒店客房管理系统(二)

目录 第二章 相关技术介绍 2.1 Jsp的简介 2.2 sql server 2005 的简介 第三章 系统的分析与设计 3.1 系统需求分析 1.理解需求 2.需求分析 3.2开发及运行环境 3.3功能模块的设计 3.3.1 设计目标 3.3.2 客房管理系统前台的设计 3.3.3 操作员管…

nginxconfig.io项目nginx可视化配置--搭建-视频

项目地址 https://github.com/digitalocean/nginxconfig.io搭建视频 nginxconfig.io搭建 nginxconfig.io搭建 展示效果 找到这个项目需要的docker镜像,有项目需要的node的版本 docker pull node:20-alpine运行这个node容器,在主机中挂载一个文件夹到容器中 主机&a…

菜鸡学习netty源码(五)—— EventLoop

1.EventLoop的类关系图 2. EventExecutor /*** 返回自身的对象* Returns a reference to itself.*/OverrideEventExecutor next();/*** 获取所属的EventExecutorGroup* Return the {link EventExecutorGroup} which is the parent of this {link EventExecutor},*/EventExecuto…

利用大语言模型(KIMI)构建智能产品的信息模型

数字化的核心是数字化建模,为一个事物构建数字模型是一件非常繁杂和耗费人工的事情。利用大语言模型,能够轻松地生成设备的信息模型,我们的初步实验表明,只要提供足够的模板,就能够准确地生成设备的数字化模型。 我们尝…

Pytorch 实现 GAN 对抗网络

GAN 对抗网络 GAN(Generative Adversarial Network)对抗网络指的是神经网络中包括两个子网络,一个用于生成信息,一个用于验证信息。下面的例子是生成图片的对抗网络,一个网络用于生成图片,另一个网络用于验…