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 频道

📑文章末尾

在这里插入图片描述

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

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

相关文章

springboot 自定义starter逐级抽取

自定义starter 背景:各个组件需要引入starter 还有自己的配置风格 –基本配置原理 &#xff08;1&#xff09;自定义配置文件 导入配置可以在配置文件中自动识别&#xff0c;提示 导入依赖后可以发现提示 &#xff08;2&#xff09;配置文件实现 –让配置文件对其他模块生…

酵母双杂交服务专题(二)

在理解了蛋白互作关系基础之上&#xff0c;为了解析它们的互作机制&#xff0c;往往还需要对其上下游通路上的基因进行分析。蛋白质之间的相互作用通过促进或抑制下游基因的转录&#xff0c;从而影响细胞的一系列生命过程。酵母单杂交技术是一种研究蛋白和DNA相互作用的常用手段…

5面试题--redis

慢查询⽇志&#xff1a;⽤于记录执⾏时间超过给定时⻓的命令请求&#xff0c;⽤户可以通过这个功能产⽣的⽇志来监视和 优化查询速度。 布隆过滤器&#xff1a;⼆进制数组进⾏存储&#xff0c;若判断元素存在则可能实际存在&#xff0c;若判断不存在则⼀定不存在。 redis中inc…

C语言——一个数如果恰好等于它的因子之和,这个数就称为“完全数”。

一个数如果恰好等于它的因子之和,这个数就称为“完全数”。例如,6的因子是 1、2、3,而6123。因此6是一个完全数。编程找出 1000 之内的所有完全数。 #include <stdio.h> int main() {int i, j, sum;for (i 1; i < 1000; i) {sum 0; //这一步很重要&#xff0c;每…

Ubuntu:安装Powershell

Powershell的安装与使用&#xff1a; 1&#xff09;安装Powershell&#xff1a;在终端依次运行以下命令即可&#xff1a; $ sudo apt-get update $ sudo apt-get install -y wget apt-transport-https software-properties-common $ wget -q "https://packages.microsof…

【Linux驱动开发】环境搭建Linux驱动开发环境

环境搭建Linux驱动开发环境 1. 简单描述2. 资源3. 安装4. 基本操作和设置 1. 简单描述 基于讯为电子rk3568教程 2. 资源 下载 VMware Workstation Pro 17 链接 Ubuntu 桌面版&#xff08;64位&#xff09; 链接 3. 安装 需要选择自定义硬件&#xff08;内存大于16g 硬盘500g…

java: Internal error in the mapping processor: java.lang.NullPointerException

启动java项目出错&#xff0c;其他人工程没有问题&#xff0c;别着急。 java: Internal error in the mapping processor: java.lang.NullPointerException at org.mapstruct.ap.internal.processor.DefaultVersionInformation.createManifestUrl(DefaultVersionInformation.j…

御云出海记|巴西市场,数字化转型与地区增长的新篇章

在11月的阳光下&#xff0c;巴西圣保罗的热情与活力成为了南半球市场的缩影&#xff0c;尤其是在华为云巴西峰会上。 云峰会亮点 11月22日&#xff0c;圣保罗举办的华为云巴西峰会成为了当地科技界的焦点。此次峰会聚集了数百位政府官员、行业领袖、专家学者&#xff0c;共同讨…

Facebook的这份开源协议使React四面楚歌

如果你觉得一些科技公司看起来很美好&#xff0c;每天都在“改变世界”……你应该看看他们的用户条款和法律文书&#xff0c;藏污纳垢之严重令人震惊。 最近&#xff0c;百度和阿里巴巴内部的软件工程团队不约而同做了一件事——弃用 React。 解释下&#xff1a; React 是一个…

电力智能化系统(智能电力综合监控系统)

电力智能化系统是一个综合性的系统&#xff0c;它利用物联网、云计算、大数据、人工智能等技术&#xff0c;依托电易云-智慧电力物联网&#xff0c;采用智能采集终端和物联网关&#xff0c;将电力设备、用电负荷、电力市场等各个环节有机地联系起来&#xff0c;实现了对电力配送…

【Java】使用 IDEA 快速生成 SpringBoot 模块

项目目录下新建 module 模块 在 pom.xml 更改为 spring initializr 配置之后的 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchem…

P9240 [蓝桥杯 2023 省 B] 冶炼金属(比值问题)

数学分析&#xff1a; 1. max(最大比值) A/B 余数p&#xff08;p<B&#xff09; > Amax*Bp 反证&#xff1a;若max不为最大,则设maxn为最大比值 (maxn)*Bmax*Bn*Bp1 > A (n*Bp1 > p ,矛盾) 故max为最大比值 2.min(最小比值…

多个nginx共享值、缓存问题

背景 目前我在集成登录认证功能&#xff08;cas&#xff09;&#xff0c;使用的架构是nginxlua&#xff0c;由于我们有多个系统&#xff08;全是前端项目&#xff09;&#xff0c;每套系统都采用nginxlua的方式进行部署&#xff08;即每个系统都是一个nginx&#xff09;&#…

Joint Bilateral Upsampling

Abstract 图像分析和增强任务&#xff08;例如色调映射、着色、立体深度和蒙太奇&#xff09;通常需要在像素网格上计算解决方案&#xff08;例如&#xff0c;曝光、色度、视差、标签&#xff09;。计算和内存成本通常要求在下采样图像上运行较小的解决方案。尽管通用上采样方…

机器学习常用距离度量方法

机器学习常用距离度量方法 前言一、前期准备二、距离度量方法1. 欧氏距离2.曼哈顿距离3.切比雪夫距离4. 闵可夫斯基距离 总结 前言 机器学习中往往通过度量来研究不同样本或数据集之间的差异性&#xff0c;合适的度量方式可以显著提高算法的准确率&#xff0c;因此在接下来的内…

Unity工具脚本-检测资源文件夹是否有预制件是指定层级

效果&#xff1a; 先在菜单栏里面找到Tools/CheckPrefabLayers打开窗口 代码&#xff1a; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine;public class CheckPrefabLayers : EditorWindow {public in…

【EI会议征稿】第三届航空航天工程与系统国际研讨会(ISAES 2024)

第三届航空航天工程与系统国际研讨会(ISAES 2024) 2024 3rd International Symposium on Aerospace Engineering and Systems 第三届航空航天工程与系统国际研讨会将于2024年3月22-24日在南京召开&#xff01;会议紧密聚焦“航空航天工程”领域的热点和难点问题&#xff0c;…

MT8390(Genio 700)安卓核心板_MTK联发科工业AI主板Linux开发板

MT8390 (Genio 700) 安卓核心板是一款高性能边缘人工智能物联网平台&#xff0c;尺寸仅为45452.2mm。该平台提供高度响应的边缘处理、先进的多媒体功能、各种传感器和连接选项&#xff0c;同时支持多任务操作系统。 Genio 700处理器拥有PS APU性能&#xff0c;高效的芯片内人工…

c++day1

提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream>using namespace std;int main() {string str;cout << "请输入一个含有大小写字母&#xff0c;空格&am…

java学习part19接口

113-面向对象(高级)-接口的使用_哔哩哔哩_bilibili 1.接口概念 个人认为是一种能力&#xff0c;某个类是否具有某种能力。一个类实现了一个接口就相当于学会了某些功能。 2.使用 接口里的属性都是全局常量public static final&#xff0c;即便不写也会自动加上。 3.多实现 4.接…