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

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 keykeyshkeys 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基本操作及使用

&#x1f4d1;前言 本文主要是【Redis】——Redis基本操作及使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一…...

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的镜像源&#xff0c;包括阿里的、网易的&#xff0c;还有很多教育网的源&#xff0c;比如&#xff1a;清华源、中科大源。推荐使用中科大源&#xff0c;快得很。 /etc/apt/sources.list编辑/etc/apt/sources.list文件, 在文件最前面添加以下条目(操作前…...

如何给shopify的网址做301跳转

很多shopify的运营者或者推广者由于缺货或者货物变更&#xff0c;又或者自己更换了使用的主题&#xff0c;导致自己的URL结构发生了变化&#xff0c;由于不想浪费掉自己原有URL 的流量&#xff0c;就想做个301跳转&#xff0c;让自己新的网址来承接原有的流量。接下来给大家介绍…...

Redis之秒杀系统

目录 Redis 秒杀 Mysql数据库设计 Mysql秒杀实现 MysqlRedis秒杀实现 秒杀是一种高并发场景&#xff0c;通常指的是在短时间内&#xff08;秒级别&#xff09;有大量用户同时访问某个商品或服务&#xff0c;争相抢购的情景。在这种情况下&#xff0c;系统需要处理大量并发请…...

c++基础----new

c基础----new 在C中&#xff0c;new是一个运算符&#xff0c;用于动态分配内存并返回指向该内存的指针。它可以用于创建单个对象、数组以及动态分配的对象。 下面是new的几种常见用法&#xff1a; 动态分配单个对象&#xff1a; int* ptr new int; // 动态分配一个int类型…...

Java中的mysql——面试题+答案(存储过程,外键,隔离级别,性能优化)——第23期

当涉及MySQL时&#xff0c;面试题的范围可以涵盖数据库设计、优化、复制、分片等方面。 什么是数据库范式&#xff1f;为什么要遵循数据库范式&#xff1f; 答案&#xff1a; 数据库范式是一组规范&#xff0c;用于设计关系数据库表的结构&#xff0c;以减少数据冗余和提高数据…...

一种新的基于物理的AlGaN/GaN HFET紧凑模型

标题&#xff1a;A new physics-based compact model for AlGaN/GaN HFETs (IEEE MTT-S International Microwave Symposium) 摘要 摘要 - 针对AlGaN/GaN HFET&#xff0c;提出了一种无拟合参数的物理解析模型。对于非饱和操作&#xff0c;建立了两个接入区和栅极下方I-V特性的…...

uniapp基础-教程之HBuilderX基础常识篇02

uniapp创建项目时属性多为vue后缀&#xff1b;其中每个文件中都包含了三段式结构分别是template&#xff1b;script&#xff1b;style形势&#xff0c;分别是前端显示的画面以及js和css样式。 template&#xff1a;说大白话就是给别人看的&#xff0c;我们打开页面就可以看到的…...

如何源码编译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病毒分析

这是一个非常古老的文件夹病毒&#xff0c;使用XP系统的文件夹图标&#xff0c;采用VB语言开发&#xff0c;使用了一种自定义的壳来保护&#xff0c;会打开网址http://www.OpenClose.ir,通过软盘、U盘和共享目录进行传播&#xff0c;会在U盘所有的目录下生成自身的副本&#xf…...

Unity安装

DAY1 下载Unity 打开Unity3D官网&#xff0c;下载Unity Hub&#xff0c;管理Unity的软件。链接https://unity.cn/releases (可能需要注册账号&#xff0c;就正常注册登录即可) 如果是新版的hub&#xff0c;可能长下面这个样子&#xff0c;还是英文的&#xff0c;点击圆圈的设…...

【代洋集团特惠好物:80瓦太阳能折叠包】

为您的绿色出行保驾护航&#xff01;代洋集团倾情推出80瓦太阳能折叠包&#xff0c;为您的户外活动提供清洁、便捷的电力支持。 这款太阳能折叠包采用高效能太阳能板&#xff0c;可折叠设计方便携带&#xff0c;轻松为您解决户外用电问题。80瓦的强大功率&#xff0c;让您在户…...

一致性Hash算法

Hash算法 哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值&#xff0c;这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。 Hash算法在安全加密领域MD5、SHA等加密算法&#xff0c;数据存储和查找的Hash表等方面均有应用。Hash表的数…...

linux 下如何将/dev/nvme0n1符格式化为空盘符

linux 下如何将/dev/nvme0n1符格式化为空盘符 作者&#xff1a;DPDK开发栏目&#xff1a;公开2023-08-30 03:01254 在Linux下&#xff0c;你可以使用以下步骤将/dev/nvme0n1硬盘格式化为空盘符&#xff1a; 首先&#xff0c;确保你拥有适当的权限。以管理员或root用户身份登录…...

IP地址的最后一位不可以为0或255

说明 通常情况下&#xff0c;IP 地址的最后一位不能为 0 或 255。这是因为这些特定的 IP 地址有特殊用途。 IP 地址的最后一位为 0 通常用作网络地址&#xff0c;表示整个网络的起始地址。IP 地址的最后一位为 255 通常用作广播地址&#xff0c;用于将数据包发送到同一网络中…...

代洋集团:太阳能智能座椅,创新能源的未来篇章

在代洋集团&#xff0c;我们致力于打造一个更绿色&#xff0c;更智能的未来。我们的太阳能智能座椅&#xff0c;就是我们对这一承诺的最新体现。 太阳能智能座椅&#xff0c;一种将绿色能源与智能化完美结合的产品。它利用高效的太阳能电池板&#xff0c;捕获并转化阳光为电能…...

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等数据

问题&#xff1a;Springboot3.0版本使用Tlog&#xff08;1.5.1版本&#xff09;开源框架时无法打印指定参数 原因&#xff1a;在Java EE 8及更高版本中&#xff0c;javax.servlet.*包已经替换成了jakarta.servlet.*&#xff0c;但是tlog官方只更新到了1.5.1版本所以还没支持到…...

基于Spring原生框架构建原生Spring的第一个程序!

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...