Redis--Lesson03--Redis基础

news/2025/3/12 20:44:47/文章来源:https://www.cnblogs.com/5ran2yl/p/18761638

基础命令

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

exists key

 

1.判断当前的key是否存在,如果存在就返回1,反之返回0

 2.移动某个键值对到其它数据库

move key 1

 

 3.设置key的过期时间,单位是秒

expire key seconds

 4.查看剩余过期时间(当为--2时完全消失)

ttl key

 5.查看key值的类型

type key

 6.如上图可以推测:默认redis中的数据都是字符串格式

String 字符串类型

1.追加key键的value

append key value

2. 获取字符串的长度

strlen key

 3.设置value值自增

incr key

 4.设置value自减

decr key

 5.通过步长实现自增自减

incrby key  value    //自增value
decrby key value    //自减value

 6.截取范围字符串[index , end]

getrange  key  index end

 特殊用法:

getrange  key  0 -1  //拿取全部的字符串

 

7.替换指定位置开始为指定字符

setrange key index value

 

 8.setex 设置key过期时间

setex key seconds value

 9.setnx:如果不存在key键则创建

setnx key value

 

 10.mset:同时创建多个key-value键值对,同时mget同时获得多个key-value

mset [key value]
mget [key]

 

 11.msetnx:原子操作同时创建多个key -value,要么一起成功,要么一起失败

msetnx key value

 12.创建存储对象的方式

 13.getset:先拿取源值,后更新值

getset key value

List数据类型

list数据类型的实现方式是通过链表实现的,故而可以将其演变为栈,队列等结构进行使用

 所有操作list集合类型的命令都是l开头的,且redis不区分命令大小写

1.lpush 向list中写入值

lpush listName value
//从左边向list集合中写入值

 2.lrange 拿取区间值

lrange listName start end
//从start 开始拿取到end结束 

 从压入数据的情况和弹出数据的情况应该可以确定其实list新增数据是尾插法

3.rpush从右边压入数据

rpush listName value
//从右边开始压入值到list中

 4.lindex通过下标获得list中的值

lindex listName number

 5.llen获得list的长度

llen listName

 6.lrem移除list集合中的数据(多个)

lrem listName count value

 7.ltrim截取从start开始长度为length的元素,留下截取后的字符串在list中

ltrim listName start length

 8.rpoplpush移除列表中最后的一个元素,将其移动到新的列表

rpoplpush listName newListName

 9.exists判断某个列表是否存在

exists listName

 10.lset设置某个位置的值为新值

lset listName index value

 11.linsert将某个具体的value插入到某个值的前面或后面

linsert listName after/before sourceStr str

  •  list数据类型实际上是一个链表,可以从left or right进行插入值
  • 如果key不存在,创建新的列表
  • 如果key存在,新增内容
  • 如果移除了所有的值就为空列表,也代表不存在
  • 两边插入效率最高,中间插入效率较慢

Set集合

set集合中的数据是不重复的,所有set操作的命令都是s开头

1.sadd往set中添加值

sadd setName value

 2.smembers查看set集合中的元素

smembers setName

 

 3.srem移除set集合中的数据

srem setName value

 4.scard查看集合的元素大小

scard setName

 5.srandmember随机抽出n个元素

srandmember setName number

 6.spop 移除一个元素(随机删除,指定删除使用srem)

spop setName

 

 7.smove 将一个值从一个集合移动到另一个集合

smove set1 set2 value

 set集合的专有操作:并集(SUNION),交集(SINTER),差集(SDIFF)

 Hash(哈希)

Map集合,key--map,这个时候的值是map集合,本质和string类型没什么区别,可以简记为:key--<key,value>

set myhash field maming

有关hash的命令都是h开头

1.hset在hash中写入一个key-map值

hset hashName key value

 2.hmset同时设置多个map

hmset hashName [filed value]

 3.hgetall获取hash中全部的数据

hgetall hashName

 4.hdel删除hash中的指定key字段

 5.hlen获取hash中的字段数量

hlen hsahName

 6.hexists判断某个字段是否存在

hexists key filed

 

 7.hincr自增

hincr hashName Filed number

 

 8.hsetnx不存在则修改,存在则不修改

hsetnx hashName field value

 

 hash很适合存储用户信息,以及更新用户信息缓存和经常变动的信息,hash都有优势

 Zset有序集合

在set 的基础之上又增加了一个值,set k1 v1 =》set k1 score v1

后期可以通过score值进行排序或者权重计算

1.zadd添加一个/多个元素

zadd setName [socre value]

 

 2.zrangebyscore显示zset集合中的元素(-∞,+∞) = (-inf ,+ inf)

zrangebyscore setName start end

 3.zrem 移除指定的元素

zrem setName value

 4.zcard 获取有序集合的个数

zcard setName

 

 5.zcount获取指定区间的成员数量

zcount setName start end

 案例:如果需要有排序操作的数据可以使用zset,带权重的消息或者包含事情的重要程度都可以使用zset

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Acunetix v25.3 发布,新增功能概览

Acunetix v25.3 发布,新增功能概览Acunetix v25.3 (Linux, Windows) - Web 应用程序安全测试 Acunetix | Web Application Security Scanner 请访问原文链接:https://sysin.org/blog/acunetix/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org重要提示 Acunetix…

Linux系统离线安装Docker

某些时候需要使用Docker环境,但存在服务器无法联网或者其他情况,需要离线安装Dokcer,本次记录Oracle Linux 7环境下安装Docker: 1、下载Docker二进制文件 下载地址:https://download.docker.com/linux/static/stable/x86_64/ 选择需要安装的版本,如下载docker-27.2.1 2、使…

Windows和mac OS共用VMware虚拟机

在Windows下使用VMware Workstation Pro创建的虚拟机,是以文件夹形式存储在硬盘中的,在mac OS中对应的虚拟机产品是VMware Fusion,那么在Windows下创建的虚拟机怎么在mac OS中使用呢?在下图中我们可以看到,Windows 10是在Windows下创建的虚拟机。 选择该目录,按下enter(…

【第一篇】如何高效利用多功能调试器上的EEPROM

EEPROMEEPROM是一种带电可擦的可编程只读存储器,相较于FLASH来说,EEPROM的寿命更长,写入数据之前不需要先进行擦写操作。目前市面上常见的eeprom的型号多为at24cxx,其中有02,04,08,16,32等等。在多功能调试器上加入EEPROM的目的:主要是起一个学习作用,因为在多功能调…

FANformer:融合傅里叶分析网络的大语言模型基础架构

近期大语言模型(LLM)的基准测试结果引发了对现有架构扩展性的思考。尽管OpenAI推出的GPT-4.5被定位为其最强大的聊天模型,但在多项关键基准测试上的表现却不及某些规模较小的模型。DeepSeek-V3在AIME 2024评测中达到了39.2%的Pass@1准确率,在SWE-bench Verified上获得42%的准…

基于Qt的信号量的使用

下面是用两个线程,一个是生产者不断地产生数据,另一个则不断消耗数据。这个例子可以很好的演示生产者/消费者模型。由于C++在C++20之后才提供信号量类型,所以这里的测试环境是Qt5.9和VS2019。 Misc.h文件:#pragma once#include <qsemaphore.h> #include <qthread.…

linux 中awk命令删除指定字段中特定字符串前边所有内容

001、删除第9个字段gene_id前边的所有内容[b20223040323@admin2 test]$ ls a.txt [b20223040323@admin2 test]$ cat a.txt ## 测试数据 NC_089035.1 Gnomon transcript 7328 15219 . + . transcript_id "rna-XM_015766610.3&quo…

.NET Core 中如何实现缓存的预热?

在构建高性能的 .NET Core 应用时,缓存是提升系统响应速度、减轻数据库压力的利器。然而,缓存并非一蹴而就,它也需要“热身”才能发挥最佳性能。这就是缓存预热的意义所在。 一、什么是缓存预热? 缓存预热,顾名思义,就是在系统启动或缓存失效后,主动将热点数据加载到缓存…

EtherNet/IP转PROFINET网关模块促成罗克韦尔PLC与变频器协议互通

一、案例背景在某新能源汽车电池生产线上,需要将采用EtherNet/IP协议的电池检测设备与采用ProfiNet协议的生产线控制系统进行集成,以实现对电池生产过程的全面监控和数据采集。 二、硬件设备西门子S7-1500 PLC 新能源电池容量测试仪:支持标准的EtherNet/IP协议 捷米特捷米特…

Modbus转PROFINET网关模块让Modbus上位机与电机高效通讯

某汽车零部件制造企业的生产线,其自动化设备来自不同品牌和供应商,如汽车生产线的总控制系统采用Modbus TCP协议,它是整个生产线的主站,而部分生产设备如汇川的伺服电机和欧姆龙的仪表等采用Profinet协议,作为从站,这时候需要Modbus TCP协议设备与Profinet协议设备进行通…

No.52 ES6---Promise对象

一、Promise对象 1.1基本概念Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件----更合理和更强大。 它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise 对象。 所谓 promise,简单说就是一个容器,里面保存着某个未来才会结…

类型转换+变量+常量+作用域

类型转换+变量+常量+作用域强制转换 (类型)变量名 高-->低 自动转化 低-->高 注意点不能对布尔值进行转换 不能把对象类型转换为不相干的类型 在把高容量转换到低容量的时候,强制转换 转换的时候可能存在内存溢出,或者精度问题变量变量作用域常量