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

news2024/11/15 14:09:57

文章目录

    • 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.coloradmin.cn/o/1643675.html

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

相关文章

udp/tcp回显网络编程

udp DatagramSocket 用于接收和发送udp数据报 构造方法: DatagramSocket():创建一个UDP数据报套接字的Socket,绑定到本地上 一个随机可用端口上,一般用于客户端DatagramSocket(int port):创建一个UDP数据报套接字的Socket,绑定到…

【Python项目】基于opencv的的【疲劳检测系统】

技术简介:使用Python技术、OpenCV图像处理库、MYSQL数据库等实现。 系统简介:用户可以通过登录系统平台实现实时的人脸照片的拍摄和上传,结合上传图像的内容进行后台的图像预处理和运算分析,用户可以通过照片分析界面查看到当前检…

Unity UGUI Image 点击事件忽略空白像素区域

我们会遇到图片不是方形的不规则图片。这个时候我们希望只有点击到图像内容本身才算点击,点击空白区域则不算点击。而UGUI对图片的处理是整个图片都会算作点击区域,这样不能满足于我们的使用需求了。 首先我们需要把图片本身的Read/Write 选项打开 然后…

深入了解 NumPy:深度学习中的数学运算利器

文章目录 1. 导入NumPy2. 创建NumPy数组3. 数组的算术运算4. N维数组4.1 创建和操作多维数组4.2 高维数组 5. NumPy的广播功能5.1 基本广播示例5.2 更复杂的广播示例 6. 访问数组元素6.1 基于索引的访问6.2 遍历数组6.3 基于条件的访问6.4 高级索引6.5 性能考虑 在深度学习和数…

「C++ STL篇 1-0」string类的使用

目录 〇、概念 一、string类的构造函数 二、赋值运算符重载 三、有关容量的操作 四、string对象的访问 五、遍历string对象的字符数组 六、string对象的修改 七、string对象的常用操作 八、字符串和数字间的转换 拓展】 练习】 源代码】 〇、概念 1. string类是什么&#xff1…

如何查看Windows 10故障日志和错误日志?这里提供详细步骤

序言 当你的计算机崩溃时,会生成一个崩溃日志,可以帮助你分析崩溃的原因。但是,你知道如何查看Windows 10崩溃日志和错误日志吗?如果你不知道,别担心。这篇文章将向你展示如何使用两种方法查看Windows10崩溃日志。 使用事件查看器查看Windows 10故障日志 要查看Windows…

【Java】基本程序设计结构(一)

前言:现在,假定已经成功安装了JDK,并且能够运行上篇示例程序。本篇将开始介绍Java程序中的基本设计结构,其中包括:一个简单的Java应用,注释,数据类型,变量与常量,运算符&…

对于子数组问题的动态规划

前言 先讲讲我对于这个问题的理解吧 当谈到解决子数组问题时,动态规划(DP)是一个强大的工具,它在处理各种算法挑战时发挥着重要作用。动态规划是一种思想,它通过将问题分解成更小的子问题并以一种递归的方式解决它们,然后利用这些…

Linux(openEuler、CentOS8)基于chrony企业内网NTP服务器搭建实验

一、知识点 chrony 是由 守护进程 chronyd 以及 命令行工具 chronyc 组成的 chronyd 在后台静默运行并通过 123 端口与时间服务器定时同步时间,默认的配置文件是 /etc/chrony.conf chronyc 通过 323 端口与 chronyd 交互,可监控 chronyd 的性能并在运…

EPAI手绘建模APP资源管理和模型编辑器2

g) 矩形 图 26模型编辑器-矩形 i. 修改矩形的中心位置。 ii. 修改矩形的长度和宽度。 h) 正多边形 图 27模型编辑器-内接正多边形 图 28模型编辑器-外切正多边形 i. 修改正多边形的中心位置。 ii. 修改正多边形中心距离端点的长度。 iii. 修改正多边形的阶数。阶数为3&…

LLVM Instruction Selection 笔记

Instruction Selection 所处阶段 注:上图来源于 Welcome to the back-end: The LLVM machine representation 可以看到 SelectionDAG 架在 LLVM IR 和 LLVM MIR 之间,在此之前 machine independent optimization 已经完成。之后基本上就进入了 machine …

Dynamics 365: 从0到1了解如何创建Custom API(2) - Custom API与插件关联

接上一篇文章Dynamics 365: 从0到1了解如何创建Custom API(1) - 在Power Apps中创建-CSDN博客 这次我们主要写一个插件,与我们之前创建的Custom API进行关联。 1. 编写插件代码 因为代码太少了,我就不写注释了,大家如果有不懂的可以在评论…

2024牛客五一集训派对day5 K.Stack

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5; c…

知乎23届数据分析校招A卷——笔记

1、and 和 or的并列运用[先看and] 条件1 OR 条件2 AND 条件3 执行顺序是先执行AND操作符&#xff08;先看条件2和3&#xff09;&#xff0c;再根据其结果判断是否需要执行OR操作符&#xff0c;并最终返回整个表达式的逻辑结果。 条件1 and 条件2 or 条件3 执行逻辑是先执行…

Swiper轮播图

版本&#xff1a;“swiper”: “^6.8.4”, 处理每分钟重新请求数据后&#xff0c;播放卡顿&#xff0c;快速闪&#xff0c;没按照设置时间播放等bug 以下是直接vue2 完整的组件代码 使用&#xff1a; <SwiperV :imgList“swiperList” / <template><div class"…

【论文阅读笔记】关于“二进制函数相似性检测”的调研(Security 22)

个人博客链接 注&#xff1a;部分内容参考自GPT生成的内容 [Security 22] 关于”二进制函数相似性检测“的调研&#xff08;个人阅读笔记&#xff09; 论文&#xff1a;《How Machine Learning Is Solving the Binary Function Similarity Problem》&#xff08;Usenix Securi…

docker-compose启动mysql5.7报错

描述一下问题经过&#xff1a; 使用docker compose 部署mysql5.7 文件如下: 使用命名卷的情况下&#xff0c;匿名卷不存在该问题 services:mysql:restart: alwaysimage: mysql:5.7container_name: mysql-devports:- 3306:3306environment:- MYSQL_DATABASEdev- MYSQL_ROOT_PAS…

备忘: 使用langchain结合千问大模型,用本地知识库辅助AI生成代码

本文主要是寻求解决把预先准备的文字需求转换为代码的方法 主要思路&#xff1a; 把某一类文字需求储存到本地知识库&#xff0c;使得用户输入需求目标&#xff0c;然后程序自动从知识库抽取相关需求&#xff0c;然后转发给在线的大模型形成代码。 工具&#xff1a; 本地在库用…

【UnityRPG游戏制作】Unity_RPG项目_玩法相关

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

jvm 马士兵 01 JVM简介,class文件结构

01.JVM是什么 JVM是一个跨平台的标准 JVM只识别class文件&#xff0c;符合JVM规范的class文件都可以被识别 u1 是一个字节 u2是两个字节