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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多域名证书一个域名50元

多域名SSL数字证书是一种特殊的域名SSL证书,它可以同时保护多个不同的独立域名,对于域名网站比较多的个人和企事业开发者来说,为每个网站购买不同的SSL证书是一项不小的开销。因此,CA认证机构推出了两种SSL证书——通配符SSL证书和…

内网使用有道云翻译(安装离线包,支持翻译长句)

当我们使用有道云翻译时,为了在没网的情况下也能准确进行翻译,我们需要下载一些离线包增强翻译效果,但是我们在内网进行有道云安装时,他只提供了一个有道云的exe安装,并没有提供离线包的安装,我们这里实现在…

vue快速入门(五十五)插槽基本用法

注释很详细&#xff0c;直接上代码 上一篇 新增内容 当传输内容只有一种时的基础写法 源码 App.vue <template><div id"app"><h1>被淡化的背景内容</h1><my-dialog><!-- 插槽内容:文字以及dom结构都可以传 --><span>你确…

分布式锁与秒杀

分布式锁与秒杀 1. 分布式锁1.1 常用Redis分布式锁方案三&#xff1a;使用Lua脚本(包含SETNX EXPIRE两条指令) 秒杀 1. 分布式锁 https://www.cnblogs.com/shoshana-kong/p/17519673.html 1.1 常用Redis分布式锁方案三&#xff1a;使用Lua脚本(包含SETNX EXPIRE两条指令) …

Gradio的Dataframe数据显示不全,例如只能显示前15行数据

Gradio的Dataframe数据显示不全&#xff0c;例如只能显示前15行数据 ⚙️1.软件环境⚙️&#x1f50d;2.问题描述&#x1f50d;&#x1f421;3.解决方法&#x1f421;&#x1f914;4.结果预览&#x1f914; ⚙️1.软件环境⚙️ Windows10 教育版64位 Python 3.10.6 Chrome 版本…

RFC 791 (1)-导论

目录 浅论 IP是啥 IP可以管啥 操作 范例查看 提示&#xff1a;本系列将会开始RFC文档阅读&#xff0c;这里会给出我的一些笔记 浅论 我们这篇RFC文档描述的是IP和ICMP协议&#xff0c;我们都知道&#xff0c;在传统的OSI七层或者是现在被简化的五层&#xff1a;应用层&…

绘唐3工具怎么成为团长阿

绘唐3怎么成为团长阿 这里https://qvfbz6lhqnd.feishu.cn/wiki/D3YLwmIzmivZ7BkDij6coVcbn7W

统一大型语言模型和知识图谱:路线图

【摘要】 大型语言模型&#xff08;LLM&#xff09;&#xff0c;如ChatGPT和GPT4&#xff0c;由于其涌现能力和泛化性&#xff0c;正在自然语言处理和人工智能领域掀起新的浪潮。然而&#xff0c;LLM是黑箱模型&#xff0c;通常无法捕捉和获取事实知识。相反&#xff0c;知识图…

图片如何转换成jpg?分享三种简单方法

在日常生活中&#xff0c;我们经常需要将照片转换为JPG格式以便于分享或者上传&#xff0c;然而&#xff0c;小伙伴不知道的是不同的设备和软件可能会有不同的默认保存格式。如果你发现你的照片不是jpg格式&#xff0c;那么如何将图片如何转换成jpg呢? 如果您有其他格式的图片…

Windows 系统使用Jenkins 实现CI一键打包部署操作

一 下载安装jenkins jenkins 中文官网链接: 下载地址 点击下载&#xff0c;完成后是一个.msi后缀的安装文件&#xff0c;双击安装 安装和普通软件一样&#xff0c;一路next&#xff0c;安装路径自己设置一下&#xff0c;默认是C盘&#xff0c;我C盘不够用了&#xff0c;设置…

【C++基础】this指针

一&#xff0c;this指针引入 不同对象调用相同函数时 &#xff0c;打印出来的值不一样&#xff0c;为什么&#xff1f; 这就隐含了一个this指针。this指针又叫隐含的this指针。&#xff08;不能显示写&#xff0c;但能显示用&#xff09; 注&#xff1a;1&#xff0c;红色部…

企业计算机服务器中了rmallox勒索病毒怎么处理,rmallox勒索病毒解密恢复

网络在为企业提供便利的同时&#xff0c;也为企业的数据安全带来严重威胁。随着网络技术的不断发展&#xff0c;越来越多的企业利用网络开展各项工作业务&#xff0c;网络数据安全问题&#xff0c;一直成为企业关心的主要话题&#xff0c;但网络威胁随着网络技术的不断成熟&…

《Fundamentals of Power Electronics》——一些常用变换器的正则电路参数值

对于理想的CCM PWM dc-dc转换器&#xff0c;其包含一个电感和电容&#xff0c;正则模型有效的低通滤波器需要包含一个电感和一个电容。正则模型简化为如下图所示。 假设电容与负载直接相连。基础的buck、boost和buck-boost转换器的参数值如下表所示。 该模型可以用传统的线性电…

Leetcode—1652. 拆炸弹【简单】

2024每日刷题&#xff08;127&#xff09; Leetcode—1652. 拆炸弹 实现代码 class Solution { public:vector<int> decrypt(vector<int>& code, int k) {int codeSize code.size();vector<int> ans(codeSize, 0);if(k 0) {return ans;}if(k > 0)…

【Linux】命令行参数和环境变量

目录 一、命令行参数 1.1 main函数的参数 1.2 命令行参数 二、环境变量 2.1 概念 2.2 查看和设置环境变量 2.2.1 查看环境变量 2.2.2 设置环境变量 2.2.3 设置PATH环境变量 2.2.4 环境变量表 2.2.5 本地变量和环境变量的区别 2.2.6 内建命令和常规命令 2.3 环境变…

新人0基础拼多多入门,纯小白快速入门多多(21节课)

课程内容&#xff1a; 1 店铺体系说明 .mp4 2 ㄠ衬雛饯铺运营雷区 ,mp4 3 店铺领航员 .mp4 4 店铺设置及管理 ,mp4 5 多多客服设置,mp4 6 店铺资金中心 .mp4 7 店铺运营小工具 ,mp4 8 售后及商品管理,mp4 9 发布机会商品.mp4 10 店铺营销 .mp4 11 产品类型 .mp4 12…

速锐得深入研究比亚迪E5电控系统及BCU数据及DBC控制策略

新能源汽车中比亚迪作为世界品牌的佼佼者&#xff0c;其E5车型凭借出色的电控系统成为了市场上的一颗璀璨明星。比亚迪E5电控系统不仅体现了技术的先进性&#xff0c;更是智能化、高效率的代名词&#xff0c;它如同一位智慧的指挥官&#xff0c;精确地掌控着汽车的每一个动作&a…

VGA项目:联合精简帧+双fifo+sobel算法 实现VGA显示(未完)

前言&#xff1a;该项目实际上是在很多基础的小练习上合成起来的&#xff0c;例如涉及到uart&#xff08;rs232&#xff09;的数据传输、双fifo流水线操作、VGA图像显示&#xff0c;本次内容在此基础上又增添了sobel算法&#xff0c;能实现图像的边沿监测并VGA显示。 文章目录…

深度学习之基于Vgg16卷积神经网络乳腺癌诊断系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于VGG16卷积神经网络的乳腺癌诊断系统项目是一个结合深度学习技术和医学图像处理的创新项目&#xff0c;旨在提高…

JetPack之ViewModel+LiveData

目录 一、概述二、LiveData 使用2.1 创建 LiveData 对象2.2 观察 LiveData 对象2.3 更新 LiveData 对象 三、编写 LiveData Demo3.1 不使用 LiveData3.2 使用 MutableLiveData3.3 使用 MediatorLiveData3.3.1 监听 2 个数据源的变化3.3.2 编写模拟 2 个数据源更新的代码 四、Vi…