Redis基本操作及使用

news2024/11/29 2:50:31

📑前言

本文主要是【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    # 自动识别,字符串里面的 整数
    # +1
    incr key(incr num)
    # -1
    decr 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 
      例     itmes
      hgetall user

获取所有的field

      # hkeys keykeys
      hkeys 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 key2
      sdiff 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 stop
        zrevrange my_zset 0 -1  withscores
删除
      #zrem key member
      zrem 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 withscores
      
       zrangebyscore 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 withscores
      zremrangebyrank my_zset 1 3
zremrangebyscore : 删除集合中 score 在给定区间的元素
      # zrange my_zset 0 -1 withscores
      zremrangebyscore my_zset 3 5

Redis发布和订阅

#发布 
publish 频道 消息

# 订阅
subscribe 频道

📑文章末尾

在这里插入图片描述

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

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

相关文章

线性可分SVM摘记

线性可分SVM摘记 0. 线性可分1. 训练样本到分类面的距离2. 函数间隔和几何间隔、(硬)间隔最大化3. 支持向量 \qquad 线性可分的支持向量机是一种二分类模型&#xff0c;支持向量机通过核技巧可以成为非线性分类器。本文主要分析了线性可分的支持向量机模型&#xff0c;主要取自…

Lesson 08 string类 (上)

C&#xff1a;渴望力量吗&#xff0c;少年&#xff1f; 文章目录 一、STL1. 概念2. STL的六大组件3. STL的重要性 二、string类的介绍与使用1. 介绍2. 使用&#xff08;1&#xff09;string类对象的常见构造&#xff08;2&#xff09;string类对象的容量操作&#xff08;3&…

jetson nano 串口通信

目录 1.UART通信介绍 2.电脑端准备工作 2.1 安装串口调试助手 2.2 硬件接线 3.Jetson Nano端准备工作 3.1安装库文件 3.2修改主板上电启动串口权限 4.示例程序-发送及接收 4.1 开启串口调试助手 4.2 导入示例程序 4.3 执行程序 4.4 查看效果 4.4.1 串口调试端 4.4…

交流负载的原理与应用

交流负载是指能够消耗交流电能的设备或系统&#xff0c;在电力系统中&#xff0c;交流负载是不可或缺的一部分&#xff0c;它们将电能转化为其他形式的能量&#xff0c;以满足人们生产和生活的需求。交流负载的原理与应用涉及到许多方面&#xff0c;包括电气工程、电子技术、自…

RT_Thread_内核包版本与芯片包版本不一致的编译报错排查

按时间线写的&#xff0c;建议看完&#xff0c;因为中间有的步骤不必重蹈覆辙。 1、安装RT_Thread Studio、STM32F4的SDK&#xff0c;新建工程编译报错error: struct serial_configure has no member named flowcontrol 1.1、报错含义 结构体struct serial_configure没有flow…

C语言——I /深入理解指针(三)

一、字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* ; ⼀般使⽤: int main() { char ch w; char *pc &ch; *pc w; return 0; } 还有⼀种使⽤⽅式如下&#xff1a; int main() { const char* pstr "hello bit.";//这⾥是把⼀个字…

牛客算法题 HJ100 等差数列 golang语言实现

算法题目 HJ100 等差数列 描述 等差数列 2&#xff0c;5&#xff0c;8&#xff0c;11&#xff0c;14。。。。 &#xff08;从 2 开始的 3 为公差的等差数列&#xff09; 输出求等差数列前n项和数据范围&#xff1a; 1 ≤ &#xfffd; ≤ 10001≤n≤1000 输入描述&#xff…

docker-compose Install OrangeHRM

OrangeHRM 前言 OrangeHRM 是一个全面的人力资源管理(HRM) 系统,它包含任何企业所需的所有基本功能。OrangeHRM旨在支持任何规模的团队,包括初创企业、中小企业以及大型跨国组织。 OrangeHRM 提前条件 OrangeHRMdocker & docker-composer 安装or

MYSQL存储

注意&#xff1a; 1.如果没有指定的SESSION/GLOBAL&#xff0c;默认是SESSION&#xff0c;会话变量。 2.mysql服务重新启动之后&#xff0c;所设置的全局参数会失效&#xff0c;要想不失效&#xff0c;可以在/etc/my.cnf中配置。 变量 用户定义变量是用户根据需要自己定义变量…

STM32F407-14.3.5-01捕获_比较通道

捕获/比较通道 每一个捕获/比较通道都是围绕着一个捕获/比较寄存器(包含影子寄存器) 包括: 捕获的输入部分(数字滤波、多路复用和预分频器)&#xff0c; 输出部分(比较器和输出控制)。 中文参考手册中框图分成了三大模块, 把框图合并成了一个整体,以便更好的理解捕获输…

2022年03月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共10题,每题2分,共30分) 第1题 由1,2,3,4,5,0这六个数字经过排列组合能够组成多少个六位数偶数?注意:每一位都不相同,最高位不能为0。 A:720 B:360 C:312 D:88 答案:C 逻辑知识单选题 第2题 运行以下程…

贪心算法策略实现

贪心算法 贪心算法&#xff1a;基于某种情况进行一个排序。 贪心算法得到的是优良解&#xff0c;而非全局最优解。需要证明局部最优解 全局最优解 经典贪心算法 —— 会议问题 对于这个问题 &#xff0c;我们提出贪心策略&#xff1a; 策略1&#xff1a;按照会议的持续时间长…

SpringBoot : ch09 整合Redis

前言 当你的应用程序需要一个快速、可扩展的内存数据库时&#xff0c;Redis是一个非常流行的选择。通过将Redis与Spring Boot集成&#xff0c;你可以轻松地利用Redis的功能&#xff0c;例如缓存、会话存储和消息队列等&#xff0c;从而提升应用程序的性能和可伸缩性。 在本教…

FUSB302MPX USB Type-C端口控制器 芯片功能介绍

FUSB302MPX是带PD的可编USB Type-C控制器,除了默认的SRC功能,器件还支持可编程性低的DRP/SRC/SNK.器件具有USB Type-C检测包括附着/分离和取向.FUSB302MPX集成了USB BMC供电协议的物理层,允许高达100W功率和角色互换.BMC PD区块完全支持Type-C指标的替代接口.器件具有自主DRP切…

git rebase冲突说明(base\remote\local概念说明)

主线日志及修改 $ git log master -p commit 31213fad6150b9899c7e6b27b245aaa69d2fdcff (master) Author: Date: Tue Nov 28 10:19:53 2023 08004diff --git a/123.txt b/123.txt index 294d779..a712711 100644 --- a/123.txtb/123.txt-1,3 1,4 123 4^Mcommit a77b518156…

UE 事件分发机制(一) day9

观察者模式原理 观察者模式通常有观察者与被观察者&#xff0c;当被观察者状态发生改变时&#xff0c;它会通知所有的被观察者对象&#xff0c;使他们能够及时做出响应&#xff0c;所以也被称作“发布-订阅模式”。总得来说就是你关注了一个主播&#xff0c;主播的状态改变会通…

Rabbitmq发送邮件并消费邮件

&#x1f4d1;前言 本文主要是【Rabbitmq】——Rabbitmq发送邮件并消费邮件的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1…

小程序开发中SSL证书的重要作用

随着互联网技术的发展&#xff0c;越来越多的企业和个人开始开发自己的小程序来满足各种需求。然而&#xff0c;在这个过程中&#xff0c;安全性和稳定性成为了开发者必须关注的重点之一。为了保障用户的隐私安全和体验效果&#xff0c;越来越多的小程序开发者开始采用SSL证书进…

Sentaurus TCAD半导体器件入门常用案例合集

Sentaurus TCAD是用于模拟半导体器件和工艺的工具之一&#xff0c;可以帮助工程师设计电路元件&#xff0c;优化半导体工艺和器件性能。主要功能包括&#xff1a;半导体器件建模&#xff08;用于建立各种半导体器件的物理模型工艺模拟&#xff09;、半导体器件的制造工艺模拟&a…

VT-VRPA2-1-1X/V0/T5控制4WRE6比例方向阀放大板

带阀芯位移反馈不带集成式放大器比例方向阀控制放大器&#xff0c;替代力士乐同型号产品&#xff0c;可以完全互换使用&#xff1b;适用于控制力士乐系列带电位置反馈的4WRE6通径和4WRE10通径2X系列比例方向阀&#xff1b;0~10V、4~20mA指令控制信号任意可选&#xff1b;直接安…