Redis基本操作及使用
📑前言
本文主要是【Redis】——Redis基本操作及使用的文章,如果有什么需要改进的地方还请大佬指出⛺️
🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见

目录
- 📑前言
- Redis基本操作及使用
- 什么是Redis
- 关系型数据库和非关系数据库的区别
- 全局key操作
- 查看所有的key
- 删除
- 查看key是否存在,存在返回1,不存在返回0
- 查看key类型
- 运算
- Redis五种数据类型及操作
- value :都是字符串类型的(可加引号也可不加)
- string
- 设置
- 获取
- 查看过期时间
- 设置过期时间
- 追加
- redis里面所有的value,都是字符串类型的
- 设置/获取 多个
- list
- 添加
- 查看
- 获得list的元素个数
- 设置,修改数据
- 删除
- hash
- 设置
- 获取
- 删除
- 获取全部field value
- 获取所有的field
- 获取所有的value
- 获取field的个数
- set集合
- 设置
- 获取
- 删除
- 移动一个集合的值到另一个集合
- 判断集合存在某个值
- 交集
- 并集
- 差集
- zset
- 设置
- 获取
- 删除
- 索引
- zcard 查看有序集合元素数
- zrangebyscore 返回集合中 score 在给定区间的元素
- zcount 返回集合中 score 在给定区间的数量
- zscore : 查看score值
- zremrangebyrank : 删除集合中排名在给定区间的元素(正向)
- zremrangebyscore : 删除集合中 score 在给定区间的元素
- Redis发布和订阅
- 📑文章末尾
Redis基本操作及使用
什么是Redis
Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,还提供了多个语言的API,操作比较方便
- Redis特点:
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。 - Redis应用场景:
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
关系型数据库和非关系数据库的区别
- 关系型数据库
表和表之间存在的关系 - 非关系型数据库
不存在表的这种概念,redis是键值对数据库,通过key查找value 所以key是唯一的。
全局key操作
- 对redis五个数据类型都适用的命令
查看所有的key
keys *
keys n*
删除
del key 例: (del name)
查看key是否存在,存在返回1,不存在返回0
exists key
查看key类型
type key
运算
set num 1 # 自动识别,字符串里面的 整数# +1incr key 例 (incr num)# -1decr key 例 (decr num)# +整数incrby key increment 例 (incrby num 50)# -整数decrby key increment 例 (decrby num 50)
Redis五种数据类型及操作
- string 字符串
- list 列表
- hash 哈希
- set 集合
- sorted sets 有序集合
key 有5种数据类型:string、list、set、zset(sorted set)、hash。
value :都是字符串类型的(可加引号也可不加)
string
string是redis最基本的类型,一个key对应一个value
设置
set key value 例:(set name 'ppx')
获取
get key 例:(get name)
# key是唯一的,不能用同一个key 不然就会覆盖
查看过期时间
# -1表示永久 -2表示 不存在
ttl key 例: (ttl name)
设置过期时间
# 给已经存在的key ,设置过期时间
expire key seconds 例: (expire name 20)#设置key的同时,设置过期时间
set key value ex seconds 例: (set age 18 ex 20)
或
setex key seconds value 例:(setex sex 20 '男')
追加
# 给已有的value,再添加新的值
# append key value
例
append name love
#get name
redis里面所有的value,都是字符串类型的
设置/获取 多个
# 设置多个 string
mset key value key value ...#获取多个
mget key key key ...
例
mget username password name
list
- List类型是一个字符串列表,可以在列头或列尾添加/删除数据,在插入数据时,如果该键不存在,redis将为该键创建一个。
添加
#lpush 左添加 (栈) 先进后出
lpush key value #例: lpush mylist a b c d#rpush 右添加 (队列)
rpush key value #例: rpush mylist a b c d
查看
# lrange key start stop ,查看索引范围内元素的值
例 查看所有
lrange mylist 0 -1#查看位与lindex位置上的元素, 返回列表中元素的值。index从0开始,当index超出索引时返回null
lindex key index #例: lindex mylist 3
获得list的元素个数
llen key #例 llen mylist
设置,修改数据
#指定索引号进行修改
lset key index value
删除
- lpop 删除左边第一个lpop key #例 lpop my_rlist- rpop 删除右边第一个rpop key #例 rpop my_list
- lrem 删除指定rpush test_list a a b b c d e a d f m c#lrem key count value#count > 0 从左往右 删除数量为count的value例 : lrem test_list 2 a#count = 0 删除所有的 value例 : lrem test_list 0 a#count < 0 从右往左 删除数量为count的value例 : lrem test_list -1 b
hash
- 是一个键值(key=>value)对集合。是string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象, field 域, value 值
设置
# hset key field value#将field-value设置到hash表中,若key不存在会新建hash表再赋值,已存在则会覆盖;例 user { name:jianeng}hset user name jianeng#设置多个#hmset key field value [field value]例 user{name:jianeng , age:18, sex:male }hmset user name jianeng age 18 sex male
获取
# hget key field例hget user name#获取多个# hmget key field field例hmget user name age
删除
# hdel key field例hdel user name
获取全部field value
# hgetall key 例 itmeshgetall user
获取所有的field
# hkeys key例 keyshkeys user
获取所有的value
# hvals key 例 values hvals user
获取field的个数
# hlen key例 hlen user
set集合
- 元素为string类型
- 无序集合
- 元素具有唯一性,不重复
设置
# sadd key value [value] (唯一,无序)#将一个或多个member元素加入到集合key中,若member已存在那么会忽略此元素,例sadd my_set m n b v c x z b
获取
# smembers key例smembers my_set
删除
- srem指定删除# srem key member例srem my_set c- spop随机删除# spop key例spop my_set
移动一个集合的值到另一个集合
# smove oldkey newkey member例smove my_set my_set2 z
判断集合存在某个值
# sismember key value例sismember my_set2 b
交集
# sinter key1 key2 ..例sinter my_set my_set2把 key1 key2的交集合并到newkey# sinterstore newkey key1 key2例sinterstore new_set my_set my_set2
并集
# sunion key1 key2 ...例sunion my_set my_set2把 key1 key2的并集合并到newkey# sunionstore newkey key1 key2例sunionstore new_set2 my_set my_set2
差集
# sdiff key1 key2sdiff my_set my_set2把 key1 key2的差集合并到newkey# sdiffstore newkey key1 key2例sdiffstore new_set3 my_set my_set2
- 获取集合个数# scard key例scard my_set
- 随机返回一个# srandmember key例srandmember my_set
zset
类似于Set,不同的是Sorted中的每个成员都分配了一个分数(Score)用于对其中的成员进行排序(升序)。
zset的成员是唯一的,但分数(score)却可以重复。
设置
# zadd key score member例zadd my_zset 1 'one'zadd my_zset 2 'two'zadd my_zset 3 'three'zadd my_zset 4 'four'zadd my_zset 5 'five'
获取
- zrange正序#zrange key start stop (withscores)zrange my_zset 0 -1 withscores- zrevrange倒序#zrevrange key start stopzrevrange my_zset 0 -1 withscores
删除
#zrem key memberzrem my_zset two
索引
- zrank正序# zrank key member例zrank my_zset three- zrevrank反序# zrevrank key member例zrevrank my_zset three
zcard 查看有序集合元素数
# zcard key例zcard my_zset
zrangebyscore 返回集合中 score 在给定区间的元素
# zrange my_zset 0 -1 withscoreszrangebyscore my_zset 2 3 withscores#返回了 score 在 2~3 区间的元素
zcount 返回集合中 score 在给定区间的数量
# zcount key min max例zcount my_zset 2 3
zscore : 查看score值
# zscore key member例zscore my_zset two
zremrangebyrank : 删除集合中排名在给定区间的元素(正向)
# zrange my_zset 0 -1 withscoreszremrangebyrank my_zset 1 3
zremrangebyscore : 删除集合中 score 在给定区间的元素
# zrange my_zset 0 -1 withscoreszremrangebyscore my_zset 3 5
Redis发布和订阅
#发布
publish 频道 消息# 订阅
subscribe 频道
📑文章末尾

相关文章:
Redis基本操作及使用
📑前言 本文主要是【Redis】——Redis基本操作及使用的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一…...
python 继承父类的变量和方法
[root@zz python]# cat a1.py # !/usr/bin/env python # -*- coding: utf-8 -*- class AddrBookEntry(object): ##类定义 def __init__(self,a,b): ##定义构造器 self.var1=a+9 self.var2=b+11 def updatePhone(self, num): # 定义方法 sel…...
ubuntu22.04新机使用(换源,下载软件,安装显卡驱动,锁屏长亮)
换源 国内有很多Ubuntu的镜像源,包括阿里的、网易的,还有很多教育网的源,比如:清华源、中科大源。推荐使用中科大源,快得很。 /etc/apt/sources.list编辑/etc/apt/sources.list文件, 在文件最前面添加以下条目(操作前…...
如何给shopify的网址做301跳转
很多shopify的运营者或者推广者由于缺货或者货物变更,又或者自己更换了使用的主题,导致自己的URL结构发生了变化,由于不想浪费掉自己原有URL 的流量,就想做个301跳转,让自己新的网址来承接原有的流量。接下来给大家介绍…...
Redis之秒杀系统
目录 Redis 秒杀 Mysql数据库设计 Mysql秒杀实现 MysqlRedis秒杀实现 秒杀是一种高并发场景,通常指的是在短时间内(秒级别)有大量用户同时访问某个商品或服务,争相抢购的情景。在这种情况下,系统需要处理大量并发请…...
c++基础----new
c基础----new 在C中,new是一个运算符,用于动态分配内存并返回指向该内存的指针。它可以用于创建单个对象、数组以及动态分配的对象。 下面是new的几种常见用法: 动态分配单个对象: int* ptr new int; // 动态分配一个int类型…...
Java中的mysql——面试题+答案(存储过程,外键,隔离级别,性能优化)——第23期
当涉及MySQL时,面试题的范围可以涵盖数据库设计、优化、复制、分片等方面。 什么是数据库范式?为什么要遵循数据库范式? 答案: 数据库范式是一组规范,用于设计关系数据库表的结构,以减少数据冗余和提高数据…...
一种新的基于物理的AlGaN/GaN HFET紧凑模型
标题:A new physics-based compact model for AlGaN/GaN HFETs (IEEE MTT-S International Microwave Symposium) 摘要 摘要 - 针对AlGaN/GaN HFET,提出了一种无拟合参数的物理解析模型。对于非饱和操作,建立了两个接入区和栅极下方I-V特性的…...
uniapp基础-教程之HBuilderX基础常识篇02
uniapp创建项目时属性多为vue后缀;其中每个文件中都包含了三段式结构分别是template;script;style形势,分别是前端显示的画面以及js和css样式。 template:说大白话就是给别人看的,我们打开页面就可以看到的…...
如何源码编译seaTunnel
如何源码编译seaTunnel 参考Set Up Develop Environment 编译前准备 下列软件需要提前安装好 GitJava ( JDK8/JDK11) 并设置JAVA_HOME 环境变量Scala (只支持 scala 2.11.12 )JetBrains IDEA . 下载源码并编译 git clone gitgithub.com:apache/seatunnel.git cd seatunne…...
msng病毒分析
这是一个非常古老的文件夹病毒,使用XP系统的文件夹图标,采用VB语言开发,使用了一种自定义的壳来保护,会打开网址http://www.OpenClose.ir,通过软盘、U盘和共享目录进行传播,会在U盘所有的目录下生成自身的副本…...
Unity安装
DAY1 下载Unity 打开Unity3D官网,下载Unity Hub,管理Unity的软件。链接https://unity.cn/releases (可能需要注册账号,就正常注册登录即可) 如果是新版的hub,可能长下面这个样子,还是英文的,点击圆圈的设…...
【代洋集团特惠好物:80瓦太阳能折叠包】
为您的绿色出行保驾护航!代洋集团倾情推出80瓦太阳能折叠包,为您的户外活动提供清洁、便捷的电力支持。 这款太阳能折叠包采用高效能太阳能板,可折叠设计方便携带,轻松为您解决户外用电问题。80瓦的强大功率,让您在户…...
一致性Hash算法
Hash算法 哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。 Hash算法在安全加密领域MD5、SHA等加密算法,数据存储和查找的Hash表等方面均有应用。Hash表的数…...
linux 下如何将/dev/nvme0n1符格式化为空盘符
linux 下如何将/dev/nvme0n1符格式化为空盘符 作者:DPDK开发栏目:公开2023-08-30 03:01254 在Linux下,你可以使用以下步骤将/dev/nvme0n1硬盘格式化为空盘符: 首先,确保你拥有适当的权限。以管理员或root用户身份登录…...
IP地址的最后一位不可以为0或255
说明 通常情况下,IP 地址的最后一位不能为 0 或 255。这是因为这些特定的 IP 地址有特殊用途。 IP 地址的最后一位为 0 通常用作网络地址,表示整个网络的起始地址。IP 地址的最后一位为 255 通常用作广播地址,用于将数据包发送到同一网络中…...
代洋集团:太阳能智能座椅,创新能源的未来篇章
在代洋集团,我们致力于打造一个更绿色,更智能的未来。我们的太阳能智能座椅,就是我们对这一承诺的最新体现。 太阳能智能座椅,一种将绿色能源与智能化完美结合的产品。它利用高效的太阳能电池板,捕获并转化阳光为电能…...
linux服务器安装gitlab
一、安装gitlab sudo yum install curl policycoreutils-python openssh-server openssh-clients sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd --permanent --add-servicehttp curl https://packages.gitlab.com/install/repositories/gitla…...
Tlog SpringBoot3.x版本无法正常打印TraceId等数据
问题:Springboot3.0版本使用Tlog(1.5.1版本)开源框架时无法打印指定参数 原因:在Java EE 8及更高版本中,javax.servlet.*包已经替换成了jakarta.servlet.*,但是tlog官方只更新到了1.5.1版本所以还没支持到…...
基于Spring原生框架构建原生Spring的第一个程序!
😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
