当前位置: 首页 > news >正文

【速成Redis】02 Redis 五大基本数据类型常用命令

前言:

上一节课,我们对redis进行了初步了解,和安装好了redis。
【速成Redis】01 Redis简介及windows上如何安装redisicon-default.png?t=O83Ahttps://blog.csdn.net/weixin_71246590/article/details/142319358?spm=1001.2014.3001.5501

该篇博客,我们正式开始学习redis的操作。

上节课我们讲到redis的数据类型有如下几种:

本篇我们将讲解:redis五大基本数据类型(也是就上图的第一列)的常用语句。 

食用说明:初学者建议边看边看边敲。复习者可根据目录快速复习某个命令。

目录

1.字符串String

设置键值对:set key value

根据键取其值:get key

删除某个键:del key 

判断一个键是否存在:exists key 

 查找所有的键:keys * 

查找所有以ge结尾的键:*ge

删除所有的键:flushall 

如何设置带有过期时间的键值对?

- setnx 和setex 的区别

2.list(列表)

lpush(头插元素)

lrange(查看当前元素)

lpop、rpop 命令也可以一次性删除多个元素

删除操作: 

3.集合Set

新建/增加set中的元素:sadd  set x y z 

查看set中的成员:smember  set

判断某个元素是否在set中:sismember set element

删除set中某个元素 :srem sourse element

4.有序集合sortedSet

创建一个集合/追加元素:zadd 

查看集合中的元素:zrange

查看某个成员分数:zscore

查看某个成员排名(从大到小):zrevrank

- 删除有序集合中的某个成员:ZREM

- 对某个成员的分数进行增加ZINCRBY

- 删除某个排名范围内的成员ZREMRANGEBYRANK

5.哈希Hash

 hset用法示例:设置名为person的集合的键值对

hget用法示例: 查看名为person的某个key对应的value

hgetall:查看某个集合里的所有的键值对 

hdel:删除某个集合里的某个键值对

hexists:查看某个集合里的某个键值对是否存在 

 hkeys:获取所有键值对的key 

 hlen:获取所有键值对的数量


1.字符串String

redis insight 中也可以使用命令行。

- redis中的值以键值对的方式存储。

设置键值对:set key value
根据键取其值:get key


- redis里的键区分大小写

- redis里默认使用字符串存储数据,并且是二进制安全的,我们可以把很多类型的数据存储到redis当中,比如数字,布尔类型,序列化后的对象等。


删除某个键:del key 


判断一个键是否存在:exists key 


 查找所有的键:keys * 


查找所有以ge结尾的键:*ge


删除所有的键:flushall 

 


(ps:redis中的值都是以二进制的形式存储的,默认是不支持中文的) 

中文 -> 二进制

\x表示后面的是16进制

解决办法:

在连接服务时候加上一个raw参数,表示以原始形式显示内容:

redis-cli --raw


跟着练习的小伙伴们,这时候的命令行窗口已经很满了,我们需要清空屏幕: 

清空屏幕:clear


如何设置带有过期时间的键值对?

- TTL命令查看键的过期时间(time to live :表示这个键还有多久过期) 

ttl key 

- 给已经存在的key设置过期时间:

expire key 10 (默认为单位为秒)

- 直接新建一个带有过期时间的键值对:

setex key seconds value


- setnx 和setex 的区别

setnx key value:当键不存在时,才新建该键,当键已经存在时,不做任何动作。

set key value:当键不存在时,新建该键。当键已经存在时,覆盖原value。


2.list(列表)

一般用来存储和操作一组有顺序的数据,类似数组。

lpush(头插元素)
lrange(查看当前元素)

lpush可以一次性添加多个元素~ 


当前list中的状况:  

通过观察我们可以知道:lpush是头插法:元素添加到list头部


rpush是尾插法(元素添加到列表尾部),其用法与lpush类似。

 


看这个图可以理解四个关键字:进出都有两个方向

l代表左边(left),r代表右边(right)

lpop、rpop 命令也可以一次性删除多个元素

一次性删除两个元素:lpop list

(注意:redis版本大于6.2.0才能一次性删除多个元素)


查看列表元素:llen list


实现简单的消息队列:可以用 rpop让队尾的元素出队 ,用lpush让心元素进队头。


删除操作: 

删除一个整个队列:del list

删除列表元素(理解为保留列表指定范围x-y内的元素):ltrim list x y

3.集合Set

set 为无序不重复集合,就是我们在数学上的那个集合。

list中的元素可以重复,而set中不可以。

set的命令以s开头

新建/增加set中的元素:sadd  set x y z 
查看set中的成员:smember  set

验证set的唯一性,尝试添加已有元素:

0 通常表示命令没有对目标数据造成实际变化,影响的元素数为 0

判断某个元素是否在set中:sismember set element

删除set中某个元素 :srem sourse element

 

(图片标注那里有个错别字啊啊啊,见谅)

我是故意的,让大家记住srem!!

 集合的运算:

两个集合之间的交集、并集等运算,redis当中也是支持的。


4.有序集合sortedSet

有序集合,可以理解为优先级队列,每个元素有一个分数,代表权重。

创建一个集合/追加元素:zadd 
查看集合中的元素:zrange

使用例子:

注意使用zadd关键字时是先分数再成员。


查看某个成员分数:zscore

zscore key member

 


查看某个成员排名(从小到大):zrank

zrank result member 

 

注意:下标是从0开始的,这里的排名值的是升序排序(从小到大)的排名。


查看某个成员排名(从大到小):zrevrank

zrevrank result member 


- 删除有序集合中的某个成员:ZREM

可以使用 ZREM命令来删除有序集合中的某个或多个成员。

ZREM key member [member ...]

示例:

ZREM result alice


- 对某个成员的分数进行增加ZINCRBY

可以使用ZINCRBY命令为有序集合中的某个成员增加指定的分数。

ZINCRBY key increment member

示例:

ZINCRBY result 10 sally


- 删除某个排名范围内的成员ZREMRANGEBYRANK

可以使用 ZREMRANGEBYRANK 命令根据成员的排名范围删除成员。排名是按分数从低到高排列。

ZREMRANGEBYRANK key start stop

示例:

ZREMRANGEBYRANK result 0 2 

该命令将删除 result 集合中排名从 0 到 2 的成员(排名从 0 开始)。


5.哈希Hash

哈希是一个字符类型的字段和值的映射表。键值对的集合。特别适合存储对象。

 前面我们在学习字符串时所使用的set和get的操作在这里变成hset、hget

我们现在有一个对象person:

其name:taylor

其age:32

 hset用法示例:设置名为person的集合的键值对

hget用法示例: 查看名为person的某个key对应的value

hgetall:查看某个集合里的所有的键值对 

  

hdel:删除某个集合里的某个键值对

 

可以看到删除完之后只剩person了。

hexists:查看某个集合里的某个键值对是否存在 

 

1表示name存在,0表示age不存在。

注意这里的exists是有s的,可以理解为第三人称单数(?)

 hkeys:获取所有键值对的key 

 hlen:获取所有键值对的数量

http://www.lryc.cn/news/441765.html

相关文章:

  • UnLua扩展C++函数和蓝图自定义事件
  • 干耳屎硬掏不出来怎么办?质量最好的可视挖耳勺推荐
  • 谷歌 Chrome 最新版升级:更强的安全检查功能守护你的上网安全
  • 深度学习自编码器 - 收缩自编码器(CAE)篇
  • Dubbo与SpringCloud的区别和优缺点
  • ★ C++进阶篇 ★ 多态
  • pg入门3—详解tablespaces2
  • python 爬虫 selenium 笔记
  • git分支管理的一些常用规范
  • GPT-4论文阅读
  • this 指向
  • 【贪心算法】贪心算法一
  • windnd.hook_dropfiles中的create_buffer值太小无法拖放长文件名
  • Gitlab runner的使用示例(二):Maven + Docker 自动化构建与部署
  • QNX Hypervisor(十)Linux Guest IPC 二
  • 怎样把PPT上顽固的图标删了
  • 【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑
  • Prometheus使用Pushgateway推送数据
  • 【Oracle】调优与oracle最大连接数配置
  • Unity教程(十六)敌人攻击状态的实现
  • ​图像超分辨率(ISR)​
  • 园区网基础组网保姆级(mstp,vrrp,irf,eth-trunk,route-policy,ospf,bgp,rbm,nat,mlag等等)
  • 大数据技术原理与应用
  • 《黑神话悟空》开发框架与战斗系统解析
  • 网络资源模板--Android Studio 通讯录App
  • Spring 出现 No qualifying bean of type ‘com.xxx‘ available 解决方法
  • C# 批量更改文件后缀名称
  • KIC算法介绍及pyrosetta示例代码
  • 【论文串烧】多媒体推荐中的模态平衡学习 | 音视频语音识别中丢失导致的模态偏差对丢失视频帧鲁棒性的影响
  • 【C语言二级考试】循环结构设计