Redis的常见命令

单线程:每个命令具备原子性

低延迟,速度快(基于内存、IO多路复用、良好的编码)

支持数据持久化

支持主从集群、分片集群

支持多语言客户端

2.Redis数据库介绍

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:

3.Redis的通用命令

KEYS查看符合模板的所有key,KEYS *查询所有键,不建议在生产环境设备上使用,因为如果数据足够多,模糊匹配可能需要很长时间来查询,又因为Redis是一个单线程。因此不建议在主设备上使用。

DEL删除一个指定的key,DEL name,删除name,返回值是删除的数量,命令DEL k1 k2 k3 批量删除。

EXISTS:判断key是否存在

EXPIRE:给key设置有效期,有效期到期时该key会被自动删除

TTL:查看一个key的剩余有效期

4.String类型

String类型是Redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可分为3类:

string:普通字符串

int:整形类型,可自增、自减操作

float:浮点类型,可做自增、自减操作

不管那种格式,底层都是字节数组形式存储,只不过编码方式不同。字符串类型的最大空间不能超过512M

常见命令

SET:添加一个String类型的键值对或者修改已经存在的一个String类型的键值对

GET:根据key获取String类型的value

MSET:批量添加多个String类型的键值对

MGET:根据多个key获取多个String类型的value

INCR:让一个整型的key自增1

INCRBY:让一个整型的key自增并指定步长

INCRBYFLOAT:让一个浮点类型的数字自增并指定步长

SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

SETEX:添加一个String 类型的键值对,并且指定有效期

5.key的结构

假如一个用户的id叫做id,一个商品的id也是id,除了更改名字来区别,好像没有别的法子了,因为Redis没有表的概念,那么用户和商品就会冲突,因此Redis的key允许有多个单词形成层级结构,多个单词之间用“:”隔开,格式如下

项目名:业务名:类型:id

6.Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于java的HashMap结构。

String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便。Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD,非常人性化:

Hash类型命令

HSET key field value:添加或者修改hash类型的key的field的值(一次只能设置一个field)

HGET key field:获取一个hash类型key的field的值

HMSET:批量添加多个hash类型key的field的值

HMGET:批量获取多个hash类型key的field的值

HGETALL:获取一个hash类型的key中的所有field和value

HKEYS:获取一个hash类型的key中的所有field

HVALS:获取一个hash类型的key的所有value

HINCRBY:让hash类型key的字段自增并指定步长

HINCRBY user:3 age 2

HSETNX:添加一个hahs类型的key的field值,前提是这个field不存在,否则不执行

7.List类型

Redis中的List类型于java的LinkedList类似,可以看做是一个双向链表,既可以支持正向索引也可以支持反向索引。

特征也于LinkedList类似:

有序

元素可以重复

插入和删除快

查询速度一般

List的常见命令有:

LPUSH key element ... :向列表左侧插入一个或多个元素(一直向左侧加元素)

LPOP key:移除并返回列表左侧的第一个元素,没有则返回null(先进后出栈的思想)

RPUSH key element ... :向列表右侧插入一个或多个元素

RPOP key:移除并返回右侧第一个元素(如果LPUSH存,RPOP取那就是队列的思想)

LRANGE key star end:返回这一段范围内的所有元素,start和end分别是list的索引,索引从0开始

BLPOP和BRPOP:于LPOP、RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

8.Set类型

Redis的Set结构与Java中的HashiSet类似,可以看做是一个value为null的HashMap。以为也是一个hash表,因此具备HashSet类似的特征:

无序

元素不可重复

查找快

支持交集、并集、差集等功能

Set类型的常见命令

SADD key member ... :向set中添加一个或者多个元素

SREM key member ... :移除set中指定元素

SCARD key:返回set中元素的个数

SISMEMBER key member:判断一个元素是否存在于set中,存在返回1,不存在返回0

SMEMBERS key:获取set中的所有元素

SINTER key1 key2 ... :求key1与key2的交集

SDIFF key1 key2 ... :求key1与key2的差集

SUNION key1 key2 ... :求key1与key2的并集

9.SortedSet类型

Redis的SortedSet是一个可排序的set集合,与Java的TreeSet有些类似,但是底层数据结构差别很大。SortedSet中每一个元素都带有一个score属性,可基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。SortedSet具备以下特性

可排序性

元素不重复

查询速度快

因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

SortedSet的常见命令有:

ZADD key score member:添加一个或者多个元素到sortedset,如果已经存在则更新score值

ZREM key member: 删除 sortedset中的一个指定元素

ZSCORE key member:获取sortedset中指定元素的socre的值

ZRANK key member:获取sortedset中指定元素的排名ZREVRANK key member是倒序。

ZCARD key:获取sortedset 中元素的个数

ZCOUNT key min max :统计score值在给定范围内的所有元素的个数,闭区间的min~max

ZINCRBY key increment member:让sortedset中的指定元素的score值自增,步长为指定的increment值

ZRANGE key min max:按照score排序后,取指定排名范围内的元素,min和max是索引从0开始

ZRANGEBYSCORE key min max:按照sore排序后,获取指定score范围内的元素,min和max是闭区间

ZDIFF、ZINTED、ZUNION:求差集、交集和并集

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

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

相关文章

(源码+部署+讲解)基于Spring Boot + Vue的车位租赁系统设计与实现

前言 💗博主介绍:✌专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2024年Java精品实战案例《100套》 🍅文末获取源码联系🍅 🌟…

Apache Incubator Answer 本地开发部署

文章目录 简介Github文档插件部署 Answer开发环境编译项目初始化项目运行项目 简介 一款适合任何团队的问答平台软件。 Apache Incubator Answer是一个开源项目,它是一个用于构建和部署问答系统的框架。该项目是Apache软件基金会的孵化器项目,提供一个…

【centos】Redis离线安装配置教程

Linux 离线安装Redis配置教程 一、下载二、安装redis三、设置redis开机自启,并且添加到系统服务四、gcc安装 redis官网地址:https://redis.io/ 一、下载 【点击进入下载地址:http://download.redis.io/releases/】选择安装包:re…

uniapp 地图分幅网格生成 小程序基于map组件

// 获取小数部分 const fractional function(x) {x Math.abs(x);return x - Math.floor(x); } const formatInt function(x, len) {let result x;len len - result.length;while (len > 0) {result 0 result;len--;}return result; }/*** 创建标准分幅网格* param …

STM32学习和实践笔记(6):自己进行时钟配置的思路

在《STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (d)-CSDN博客》 中,我了解到,在程序执行我们写的main函数之前,实际上先执行了一个汇编语言所写的启动文件,以完成相应的初始…

django celery 异步任务 异步存储

环境:win11、python 3.9.2、django 4.2.11、celery 4.4.7、MySQL 8.1、redis 3.0 背景:基于django框架的大量任务实现,并且需要保存数据库 时间:20240409 说明:异步爬取小说,并将其保存到数据库 1、创建…

配置交换机SSH管理和端口安全——实验2:配置交换机端口安全

实验目的 通过本实验可以掌握: 交换机管理地址配置及接口配置。查看交换机的MAC地址表。配置静态端口安全、动态端口安全和粘滞端口安全的方法 实验拓扑 配置交换机端口安全的实验拓扑如图所示。 配置交换机端口安全的实验拓扑 实验步骤 (1&#x…

springboot+vue2+elementui+mybatis- 批量导出导入

全部导出 批量导出 报错问题分析 经过排查,原因是因为在发起 axios 请求的时候,没有指定响应的数据类型(这里需要指定响应的数据类型为 blob 二进制文件) 当响应数据回来后,会执行 axios 后置拦截器的代码&#xff0…

[开源] 基于transformer的时间序列预测模型python代码

分享一下基于transformer的时间序列预测模型python代码,给大家,记得点赞哦 #!/usr/bin/env python # coding: 帅帅的笔者import torch import torch.nn as nn import numpy as np import pandas as pd import time import math import matplotlib.pyplo…

【Java8新特性】二、函数式接口

这里写自定义目录标题 一、什么是函数式接口二、自定义函数式接口三、作为参数传递 Lambda 表达式四、四大内置核心函数式接口1、消费形接口2、供给形接口3、函数型接口4、断言形接口 一、什么是函数式接口 只包含一个抽象方法的接口,称为函数式接口。你可以通过 L…

【MATLAB高级编程】第二篇 | 元胞数组(cell)操作

【第二篇】元胞数组(cell)操作 1. 创建元胞数组cell2. 查看和修改cell内的元素值3. 高级操作: 可视化作图显示cell内的内容4. 把矩阵转换成单元数组5. 把单元数组转换成结构体变量 你好! 欢迎进入 《MATLAB高级编程》 文章系列 ,每…

postgresql uuid

示例数据库版本PG16,对于参照官方文档截图,可以在最上方切换到对应版本查看,相差不大。 方法一:自带函数 select gen_random_uuid(); 去掉四个斜杠,简化成32位 select replace(gen_random_uuid()::text, -, ); 官网介绍…

《前端面试题》- CSS - CSS选择器的优先级

行内样式1000 d选择器100 属性选择器、class或者伪类10 元素选择器,或者伪元素1 通配符0 参考网址:https://blog.csdn.net/jbj6568839z/article/details/113888600https://www.cnblogs.com/RenshuozZ/p/10327285.htmlhttps://www.cnblogs.com/zxjwlh/p/6…

搭建Grafana+Prometheus监控Spring Boot应用

Spring项目改造 maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency><dependency><groupId>io.micrometer</groupId><artif…

​如何使用 ArcGIS Pro 制作带贴图建筑

对于用GIS软件制作三维建筑&#xff0c;很多时候都是制作的建筑体块&#xff0c;这里为大家介绍一下怎么使用 ArcGIS Pro 制作带贴图的建筑&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的建筑数据&#xff0c;除了建筑数据&#xff0c;常见…

最简洁的Docker环境配置

Docker环境配置 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Mac、Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不…

AI大模型探索之路-应用篇2:Langchain框架ModelIO模块—数据交互的秘密武器

目录 前言 一、概述​​​​​​​ 二、Model 三、Prompt 五、Output Parsers 总结 前言 随着人工智能技术的不断进步&#xff0c;大模型的应用场景越来越广泛。LangChain框架作为一个创新的解决方案&#xff0c;专为处理大型语言模型的输入输出而设计。其中&#xff0c;…

redis主从复制详解

redis主从复制(replica) 1、是什么&#xff1f; 目录 redis主从复制(replica) 1、是什么&#xff1f; 2、能干嘛&#xff1f; 3、怎么玩&#xff1f; 4、案例演示 前置操作 &#x1f357;一主二仆 &#x1f355;薪火相传 &#x1f32d;反客为主 5、复制的原理和工作…

Flutter仿Boss-6.底部tab切换

效果 实现 图片资源采用boss包中的动画webp资源。Flutter采用Image加载webp动画。 遇到的问题 问题&#xff1a;Flutter加载webp再次加载无法再次播放动画问题 看如下代码&#xff1a; Image.asset(assets/images/xxx.webp,width: 40.w,height: 30.w, )运行的效果&#xf…

Vue3 + Vite 构建组件库发布到 npm

你有构建完组件库后&#xff0c;因为不知道如何发布到 npm 的烦恼吗&#xff1f;本教程手把手教你用 Vite 构建组件库发布到 npm 搭建项目 这里我们使用 Vite 初始化项目&#xff0c;执行命令&#xff1a; pnpm create vite my-vue-app --template vue这里以我的项目 vue3-xm…