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

news/2024/9/20 0:54:07 标签: 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.niftyadmin.cn/n/5666404.html

相关文章

FinGPT金融大模型

FinGPT仓库https://github.com/AI4Finance-Foundation/FinGPT 功能: Adviser。根据新闻判断市场情绪(积极、消极、中性),给出投资建议。Quantitative Trading。定制属于自己的金融助手。叫它关注某几个股票、监测消息等。可以直…

【洛谷】P1546 [USACO3.1] 最短网络 Agri-Net 的题解

【洛谷】P1546 [USACO3.1] 最短网络 Agri-Net 的题解 题目传送门 题解 首先,初始化,很简单这里就不多赘述了。 然后重复 n − 1 n - 1 n−1 次 取顶点 v ∈ V − s v \in V - s v∈V−s,使得 w [ u ] [ v ] min ⁡ w [ u ] [ v ] ∣ …

代码随想录:打家劫舍||

打家劫舍|| 循环数组用拼接数组处理&#xff0c;并多起点dp&#xff0c;取所有结果的最大值。 class Solution { public:int rob(vector<int>& nums) {int dp[500] ;int nnums.size(); if(n1)return nums[0];nums.insert(nums.end(),nums.begin(),nums.end());//数…

Linux新增用户,对用户提权

文章目录 一、创建用户二、删除用户三、对用户进行提权 一、创建用户 adduser进行创建用户&#xff0c;名字最好不用和指令名称相同。 在创建完用户时最好使用sudo passwd username进行对用户密码的修改. 二、删除用户 userdel进行对用户的删除 三、对用户进行提权 新建用…

leetcode438找到字符串种所有异位词

我的思路 先计算子串的字符的ascll码值的和&#xff0c;看看这个值是否相等&#xff0c;我认为可以筛掉一一部分就是子串和要比较的串排序比较是否相等 但是超时&#xff0c;样例太长了 题解思路 class Solution {public List<Integer> findAnagrams(String s, String…

软件设计-开闭原则

开闭原则是一种重要的设计思想&#xff0c;它为软件系统的可扩展性和可维护性提供了有力的支持。 一、开闭原则的原理 开闭原则&#xff08;Open-Closed Principle, OCP&#xff09;是指软件实体&#xff08;类、模块、函数等&#xff09;应当对扩展开放&#xff0c;对修改关…

RTMP协议在无人机巡检中的应用场景

为什么要用无人机巡检 好多开发者对无人机巡检技术方案&#xff0c;相对陌生&#xff0c;实际上&#xff0c;无人机巡检就是利用无人机对特定区域或设施进行定期或不定期的检查。这种巡检方式相比传统的人工巡检具有显著的优势&#xff0c;包括速度快、覆盖广、风险低、准确性…

【linux】file命令

在Linux和Unix系统中&#xff0c;file命令是一个非常实用的工具&#xff0c;用于识别文件类型。它通过分析文件的内容或文件的元数据&#xff08;如文件头信息&#xff09;&#xff0c;来猜测文件是什么类型的。这对于处理未知文件或验证文件类型非常有帮助。 基本用法 file …