【redis学习篇1】redis基本常用命令

news2024/11/28 20:40:50

目录

redis存储数据的模式

常用基本命令

一、set

二、keys pattern

keys +字符串当中携带问号

keys +字符串当中携带*号

keys + 【^+字母】

keys +*

三、exists

四、del

五、expire

5.1 ttl命令

5.2key删除策略

5.2.1惰性删除

5.2.2定期删除

六、type

key的数据类型

string

incr:自增1,仅限数字类型

incrby key +一个具体的数量

decr key

incrbyfloat key +一个值

append

getrange key +start +end

setrange key start+替换的字符串

strlen key

hash

hset key file1 value1

hget key file1

hexists key file1

hdel key file1

hkeys key

list

lpush

lrange

rpush 

lpop

lindex 

llen key

set

Set的常见操作

SADD命令

SMEMBERS 命令

SISMEMBER 命令

SPOP命令

SRANDMEMBER命令

SMOVE 命令

SREM 命令

zset

一、zset数据类型概述

二、zset的常见操作


redis存储数据的模式

一般情况下,都是以 key value的模式进行存储的。

这种存储的结构类似于哈希表(HashMap);

但是redis不同于哈希表的地方在于:

redis的key只可以是string类型;value可以是其他数据结构。

而HashMap的key和value都可以是任意的数据结构。

对于value的类型,有字符串哈希表列表集合有序集合等数据结构的类型

而操作这些不同的数据结构,就会用到不同的命令。


常用基本命令

一、set

用法:set 【key】 【value】

在这里面,key和value都是字符串;由用户手动输入key和value的值;

当敲回车之后提示OK说明已经设置成功了; 


二、keys pattern

pattern为包含特殊符号的字符串;

keys +字符串当中携带问号

例如:keys h?llo

?只能匹配一个字符;因此返回的字符可能是:hello/hallo等;就是问好只能占据一个字符;


keys +字符串当中携带*号

例如:当输入:keys h*llo的时候

返回的内容可能是:heeeeello;habcdllo也是就*可以代替若干个字母


keys + 【^+字母】

这种情况,是为了排除某个字母设置的。


keys +*

查询当前服务器上面的所有key


三、exists

判定key是否存在

用法:exists +key的名称:返回key存在的个数

假如一个key hello存在,那么 exists + hello就会返回1.

假如一个key hello,hallo存在;那么 exists +hello+hallo 就会返回2.


四、del

删除某个key.

del +key的名称:删除某一个key;删除成功返回1;

del +key1 +key2:删除key1和key2;删除成功返回2;


五、expire

expire的作用是给指定的key设定过期时间;key超出了指定的时间就会自动失效..

expire +key + seconds;设置成功返回1,设置失败返回0.

seconds为key有时效的秒数.

5.1 ttl命令

这个命令是为了判断一个key的剩余过期时间是多少;

ttl+key:返回某个key的剩余过期时间

如果返回-1说明没有设置过期时间;

如果返回-2说明已经过期;

5.2key删除策略

5.2.1惰性删除

key的过期时间到了,但是还没有删除,key还存在;当最后一次访问这个key的时候发现已经过期了就删除;

5.2.2定期删除

定期删除策略,并不一定是在一定时间内删除所有的key,而是每次抽取一部分的key,进行过期时间验证,也就是类似于一个抽查的过程;因为redis是单线程的程序,因此不太好一次遍历所有的key;否则容易造成宕机。


六、type

type+key的类型:返回当前的key的数据类型是什么;


key的数据类型

string

set key value ex +key有效的时间(设置某个key有效时间为10秒)

set key1 vlaue1 NX(某个key1不存在才设置,如果存在就返回nil)

set key2 value2 XX (某个key2存在才设置,存在则设置失败)

get key3:只支持字符串类型的value


incr:自增1,仅限数字类型

令某一个key增加1:

set key 10

incr key

get key:返回11;

incr操作的key如果不存在,那么就当作自增1来表示。


incrby key +一个具体的数量

对于某一个key的value增加10.


decr key

针对某一个数值的key执行-1操作.


incrbyfloat key +一个值

对于某一个key自增对应的一个值


append

set key hello;

append key world;==> key变成了:hello world


getrange key +start +end

getrange helloworld +0+-1

含义:截取这个字符串的从左边开始的第一个元素到从右边开始的第一个元素之间的字符串;

返回:helloworld;


getrange helloworld +1+-2

含义:截取这个字符串的从左边开始的第二个元素到从右边开始的第二个元素之间的字符串;

返回内容:elloworl


setrange key start+替换的字符串

setrange +helloworld + 1 +aaa

含义就是:从左往右的1号元素开始,也就是从字母e开始,往后替换三个字符为aaa.

==>haaaoworld


strlen key

返回的是key的长度==>包含的字符长度


hash

每一个hash类型的key,都是按照这样的结构存储的;在上图当中,key的名称是name1;

在这个key下面有好几个键值对:key-value;


hset key file1 value1

对于key设置:file1+value1

hget key file1

对于key,获取到file1的value是多少

hexists key file1

对于key,判断其中的file1属性是否存在

hdel key file1

删除的是key当中的file1

hkeys key

获取到key当中的所有hash的键;


list
lpush

lpush key 1 2 3 4==>含义是:使用头插法插入:1 2 3 4;因此执行完之后;在这个key当中元素的顺序是: 4,3,2,1

lrange

lrange key start end

这一个命令,相当于对于key做了一个截取操作,start的位置为从左往右的元素下表,end的位置为从从右往左的第一个元素下标;

rpush 

rpush key 1 2 3 4

这样,相当于尾插;这个时候key当中的元素存储顺序为:1 2 3 4;

lpop

从list左侧取出元素,相当于头删;

lindex 

lindex + key:返回的是下标对应的元素:如果一个list当中存在下面的元素:

1,2,3,4,5,6,7,8;

那么 lindex key 3==>返回的就是元素4;负数同理,从右往左计算索引。

llen key

返回key当中的list个数。


set

类似于JAVA当中的hashset数据结构;元素是无序的,并且不可以重复;

Set的常见操作

二.SET命令
集合的元素,代表 member 

SADD命令

        往集合当中添加元素,返回添加成功的元素个数。

语法: SADD key  member [member,member,...]

SMEMBERS 命令

        展示集合当中元素

语法 :SMEMBERS key

SISMEMBER 命令

        判断一个元素在不在set当中

语法:SISMEMBER  key member

SPOP命令

        一般表示从末尾删除元素,但由于set集合是无序的,此处是随机删除COUNT 个元素。

语法:pop key [count]

SRANDMEMBER命令

        随机获取集合当中的count个元素。

语法:srandmember key [count]

SMOVE 命令

        将一个元素从源set(source)取出,并且放入目标的set集合(destination)

语法:SMOVE SOURCE DESTINATION MEMBER

SREM 命令

        将集合set删除元素,一次删除多个个member

语法:srem key member [member ...]

集合之间的操作:交、并、差集

交集命令:SINTER key [key,key,...]     或者   SINTERSTORE  DESTINATION  key [key,key,...]    把结果放在DESTINATION当中。

并集命令:SUNION key [key ,...]    或者 SUNIONSTORE DESTINATION  key [key,key,...]    把结果放在DESTINATION当中。

差集命令:SDIFF key [key ,...]    或者 SDIFFSTORE DESTINATION  key [key,key,...]    把结果放在DESTINATION当中。


zset

Redis的zset数据类型,即有序集合(Sorted Set),是一种非常特别且有用的数据结构。以下是对zset数据类型的详细介绍及其常见操作的归纳:

一、zset数据类型概述

  1. 特性

    • zset是Redis中字符串类型元素的集合,且集合中的成员是唯一的,不允许重复。
    • 每个成员都会关联一个double类型的分数(score),这个分数用于对集合中的成员进行排序。分数可以重复。
    • 集合中的成员会根据分数从小到大进行排序,如果分数相同,则按照字典顺序排序。
  2. 底层实现

    • 在Redis的早期版本中,zset的底层数据结构可以是压缩列表(zipList)或跳表(skipList)。
    • 当有序集合的元素个数小于一定数量(如128个)且每个元素的值小于一定字节数(如64字节)时,Redis会使用压缩列表作为底层数据结构。
    • 当不满足上述条件时,Redis会使用跳表作为底层数据结构。
    • 在Redis 7.0及更高版本中,压缩列表数据结构已经被废弃,改由listpack数据结构实现。

二、zset的常见操作

  1. 添加元素

    • 使用ZADD命令向zset中添加一个或多个元素,并指定它们的分数。
    • 语法:ZADD key score1 member1 [score2 member2 ...]
  2. 获取元素

    • 使用ZRANGE命令获取zset中指定排名范围内的元素,可以选择是否同时返回分数。
    • 语法:ZRANGE key start stop [WITHSCORES]
    • 类似地,ZREVRANGE命令可以获取zset中指定排名范围内的元素,但按分数从高到低排序。
  3. 获取元素数量

    • 使用ZCARD命令获取zset中元素的数量。
    • 语法:ZCARD key
  4. 获取元素排名

    • 使用ZRANK命令获取元素在zset中的排名(从0开始,按分数从小到大排序)。
    • 语法:ZRANK key member
    • 类似地,ZREVRANK命令可以获取元素在zset中的排名,但按分数从高到低排序。
  5. 获取元素分数

    • 使用ZSCORE命令获取元素的分数。
    • 语法:ZSCORE key member
  6. 删除元素

    • 使用ZREM命令从zset中删除一个或多个元素。
    • 语法:ZREM key member [member ...]
  7. 为元素分数增加增量

    • 使用ZINCRBY命令为元素的分数加上指定的增量。
    • 语法:ZINCRBY key increment member
  8. 按分数范围获取元素

    • 使用ZRANGEBYSCORE命令获取zset中分数在指定范围内的元素,可以选择是否同时返回分数。
    • 语法:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
    • 类似地,ZREVRANGEBYSCORE命令可以获取zset中分数在指定范围内的元素,但按分数从高到低排序。
  9. 按分数范围删除元素

    • 使用ZREMRANGEBYSCORE命令删除zset中分数在指定范围内的元素。
    • 语法:ZREMRANGEBYSCORE key min max
  10. 按排名范围删除元素

    • 使用ZREMRANGEBYRANK命令删除zset中指定排名范围内的元素。
    • 语法:ZREMRANGEBYRANK key start stop
  11. 交集和并集操作

    • 使用ZINTERSTORE命令计算多个zset的交集,并将结果存储在新的zset中。可以指定每个zset的权重和聚合方式。
    • 语法:ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE sum|min|max]
    • 使用ZUNIONSTORE命令计算多个zset的并集,并将结果存储在新的zset中。同样可以指定权重和聚合方式。

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

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

相关文章

数据结构--线性表(顺序结构)

1.线性表的定义和基本操作 1.1线性表以及基本逻辑 1.1.1线性表 (1)n(>0)个数据元素的有限序列,记作(a1,a2,...an),其中ai是线性表中的数据元素,n是表的长度。 (2)…

【RabbitMQ】RabbitMQ学习

1. 发送流程 生产者 - connection - channel - 交换机 - 对列- channel - connection - 消费者 2. 工作模式 2.1. 简单模式(点对点) 一个消费者一个生产者,直接进行通信。 2.2. 工作对列模式 多个消费者共同消费消息对列中的消息。同一条…

10其他内容补充

如何生成随机数原理详细分析 文章目录 如何生成随机数原理详细分析原理如果使用相同的随机数种子,得到的随机数序列会是相同的吗示例为什么需要随机数种子 动态内存管理前言malloc函数calloc函数realloc函数free函数 - 避免内存泄漏常见的动态内存错误 原理 说到如何生成一个随…

实现TCP Connect的断线重连机制:策略与实践

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 断线重连机制,它成为确保应用在网络不稳定情况下仍能持续提供服务的关键技术之一。本文旨在深入探讨TCP(传输控制协…

浅聊前后端分离开发和前后端不分离开发模式

1.先聊聊Web开发的开发框架Spring MVC 首先要知道,Spring MVC是Web开发领域的一个知名框架,可以开发基于请求-响应模式的Web应用。而Web开发的本质是遵循HTTP(Hyper Text Transfer Protocol: 超文本传输协议)协议【发请求&#xf…

仿RabbitMQ实现消息队列客户端

文章目录 客⼾端模块实现订阅者模块信道管理模块异步⼯作线程实现连接管理模块生产者客户端消费者客户端 客⼾端模块实现 在RabbitMQ中,提供服务的是信道,因此在客⼾端的实现中,弱化了Client客⼾端的概念,也就是说在RabbitMQ中并…

V2M2引擎源码BlueCodePXL源码完整版

V2M2引擎源码BlueCodePXL源码完整版 链接: https://pan.baidu.com/s/1ifcTHAxcbD2CyY7gDWRVzQ?pwdmt4g 提取码: mt4g 参考资料:BlueCodePXL源码完整版_1234FCOM专注游戏工具及源码例子分享

图解大模型计算加速系列:vLLM源码解析3,块管理器(BlockManager)上篇

vllm块管理器又分成朴素块管理器(UncachedBlockAllocator)和prefix caching型块管理器(CachedBlockAllocator)。本篇我们先讲比较简单的前者,下篇我们来细看更有趣也是更难的后者。 【全文目录如下】 【1】前情提要…

阿里巴巴开源的FastJson 1反序列化漏洞复现攻击保姆级教程

免责申明 本文仅是用于学习检测自己搭建的靶场环境有关FastJson1反序列化漏洞的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在…

Linux高级编程_29_信号

文章目录 进程间通讯 - 信号信号完整的信号周期信号的编号信号的产生发送信号1 kill 函数(他杀)作用:语法:示例: 2 raise函数(自杀)作用:示例: 3 abort函数(自杀)作用:语法:示例: 4 …

macos安装git并连接gitCode远程仓库

文章目录 资料地址下载和安装初始化配置本地全局配置,SSH公私密钥生成远程SSH key配置 新建代码仓库,并关联到本地 资料地址 git官网地址gitCode地址 下载和安装 打开git官网地址,直接下载。【不建议使用brew,因为本人实践&…

【Qt】控件概述(2)—— 按钮类控件

控件概述(2) 1. PushButton2. RadioButton——单选按钮2.1 使用2.2 区分信号 clicked,clicked(bool),pressed,released,toggled(bool)2.3 QButtonGroup分组 3. CheckBox——复选按钮 1. PushButton QPushB…

B树系列解析

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

etcd 快速入门

简介 随着go与kubernetes的大热,etcd作为一个基于go编写的分布式键值存储,逐渐为开发者所熟知,尤其是其还作为kubernetes的数据存储仓库,更是引起广泛专注。 本文我们就来聊一聊etcd到底是什么及其工作机制。 首先,…

查找回收站里隐藏的文件

在Windows里,每个磁盘分区都有一个隐藏的回收站Recycle, 回收站里保存着用户删除的文件、图片、视频等数据,比如,C盘的回收站为C:\RECYCLE.BIN\,D盘的的回收站为D:\RECYCLE.BIN\,E盘的的回收站为E:\RECYCLE…

【解决方案】JVM调优:给定资源条件下减少Full GC频率

1 缘起 在一次其他团队技术分享时,有幸进行了旁听, 谈到一个应用场景,服务端在给定的资源下,频繁Full GC, 降低了服务请求处理能力以及任务处理能力,频繁Full GC,导致服务处理能力下降, 服务在Full GC期间无法处理用户请求以及其他任务,服务不稳定,可以理解为服务在…

【C++算法】9.双指针_四数之和

文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: 18.四数之和 题目描述: 解法 解法一:排序暴力枚举利用set去重 解法二:排序双指针 从左往右依次固定一个数a在a后面的区间里&#x…

坐标系变换总结

二维情况下的转换 1 缩放变换 形象理解就是图像在x方向和y方向上放大或者缩小。 代数形式: { x ′ k x x y ′ k y y \begin{cases} x k_x x \\ y k_y y \end{cases} {x′kx​xy′ky​y​ 矩阵形式: ( x ′ y ′ ) ( k x 0 0 k y ) ( x y ) \be…

【C语言】数据在内存中的存储(万字解析)

文章目录 一、大小端字节序和字节序判断1.案例引入2.什么是大小端字节序3.大小端字节序判断 二、整数在内存中的存储以及相关练习1.整型在内存中的存储2.练习练习1:练习2练习3练习4练习5:练习6 三、浮点数在内存中的存储1.案例引入2.浮点数在内存中的存储…

uniapp+Android面向网络学习的时间管理工具软件 微信小程序

目录 项目介绍支持以下技术栈:具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是:数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 用户功能…