2、Redis7 十大数据类型(一)

news2024/11/16 19:26:01

命令官网
英文版:https://redis.io/commands/
中文版:http://redis.cn/commands.html/

1.1 类型说明
在这里插入图片描述
1.2 Key命令

命令不区分大小写,但是key区分

命令	              说明
keys *          //展示当前库的所有key
exists key      //判断某个key是否存在
type key        //查看你的key是什么类型
del key          //删除指定的key数据
unlink key      //非阻塞删除,仅仅将keys从keyspace元数据中删除,没真正的删除会在后续异步中操作
ttl key            //查看还有多少秒过期 -1表示永不过期 -2 表示已过期
expire key 秒      //给key设置过期时间
move key [0-15] // 将当前数据库的key移动到指定的数据库中,redis默认是有16个数据库的
select [0-15]       // 切换数据库[0-15],默认为0
dbsize                // 查看当前数据库key的数量
flushdb               // 清空当前库
flushall               // 清空16个数据库 慎用

Redis 的过期时间设置有四种形式:

EXPIRE 秒——设置指定的过期时间(),表示的是时间间隔。
PEXPIRE 毫秒——设置指定的过期时间,以毫秒为单位,表示的是时间间隔。
EXPIREAT 时间戳-秒——设置指定的 Key 过期的 Unix 时间,单位为秒,
表示的是时间/时刻。
PEXPIREAT 时间戳-毫秒——设置指定的 Key 到期的 Unix 时间,
以毫秒为单位,表示的是时间/时刻。

1.3 String(字符串)操作命令

SET 设置

格式:set 参数1 参数2 [参数3] [参数4] [参数5]

参数1:key名称
参数2:value
参数3:NX | XX
参数4:GET
参数5:EX seconds | PX milliseconds |
EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL

set key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL]

参数说明表
在这里插入图片描述

示例:

设置k1的value为hello:

set k1 hello

如果k2存在直接返回nil,如果k2不存在,设置k2的value为hello:

set k2 hello NX

如果k3不存在直接返回nil,如果k3存在,设置k3的value为"hello":

set k3 hello XX

先返回k4原来的value再将k4的value修改为hello,如果k4不存在返回值为nil:

set k4 hello get

设置k5的value为hello,并在10秒后过期:

set k5 hello ex 10

设置k6的value为hello,并在500毫秒后过期:

set k6 hello px 500

设置k7的value为hello,并在到达时间戳1783219280秒过期:

set k7 hello exat 1783219280

设置k8的value为hello,并在到达时间戳1783219461238毫秒过期:

set k8 hello exat 1783219461238

设置k9的value为hello,并保留k9原先设定的过期时间:

set k9 hello keepttl

GET 查询

格式:get 参数1

参数1:key名称

获取key为kk的value

get kk

GETSET 查询后设置

格式:getset 参数1 参数2

参数1:key名称
参数2:内容
示例:

先返回k1原来的value,再将value设置为hello

getset k1 hello

SETEX 过期值设置

格式:setex 参数1 参数2 参数3

参数1:key名称
参数2:秒
参数3:内容
示例:

设置k1的值为hello并在10秒后过期

setex k1 10 hello

SETNX 冲突设置

格式:setnx 参数1 参数2

参数1:key名称
参数2:内容
示例:

如果k1不存在,设置k1的值为hello

setnx k1 hello

MGET 批量查询

格式:mget 参数1

参数1:key列表
示例:

获取k1、k2的value

mget k1 k2

MSET 批量设置

格式:MSET 参数1

参数1:键值对列表
示例:

设置k1的value为v1、k2的value为v2

mset k1 v1 k2 v2

MSETNX NX规则批量设置

格式:MSETNX 参数1

参数1:键值对列表
示例:

如果不存在k1、k2(需都成立),则设置k1的value为v1、k2的value为v2

msetnx k1 v1 k2 v2

GETRANGE 精准截取

格式:getrange 参数1 参数2 参数3

参数1:key名称
参数2:起始位置
参数3:终止位置
示例:

获取key的value,并返回value的0 - 5位置上的字符

getrange key 0 5

SETRANGE 精准设置

格式:setrange 参数1 参数2 参数3

参数1:key名称
参数2:起始位置
参数3:字符串
示例:

将hello设置到k1对应value的索引1位置

setrange k1 1 hello

INCR 自增查询

格式:incr 参数1

参数1:key名称
注:这里的key对应的value必须是数字整型

示例:

使k1的value自增1并返回自增后的值

incr k1

INCRBY 增加查询

格式:incrby 参数1 参数2

参数1:key名称
参数2:数字整型
注:这里的key对应的value必须是数字整型

示例:

使k1的value增加5并返回增加后的值

incrby k1 5

DECR 自减查询

格式:decr参数1

参数1:key名称
注:这里的key对应的value必须是数字整型

示例:

使k1的value自减1并返回自增后的值

decr k1

DECRBY 减少查询

格式:decrby 参数1 参数2

参数1:key名称
参数2:数字整型
注:这里的key对应的value必须是数字整型

示例:

使k1的value减少5并返回减少后的值

decrby k1 5

STRLEN 获取字符串长度

格式:strlen 参数1

参数1:key名称
获取k1的value字符串长度

strlen k1

APPEND 追加内容

格式:append 参数1 参数2

参数1:key名称
参数2:内容
将hello追加到k1的value后

append k1 hello

1.4 List(集合)操作命令

LPUSH 左端插入

格式:lpush 参数1 参数2

参数1:list名称
参数2:插入的数据,可以是多个用空格隔
示例:

在list1左端依次插入hello、world

lpush list1 hello world

RPUSH 右端插入

格式:rpush 参数1 参数2

参数1:list名称
参数2:插入的数据,可以是多个用空格分隔
示例:

在list1右端依次插入hello、world

rpush list1 hello world

LRANGE 检索列表

格式:lrange 参数1 参数2 参数3

参数1:list名称
参数2:起始索引
参数3:终止索引
示例:

检索list1索引0到3的数据

lrange list1 0 3

检索list2的所有数据

lrange list2 0 -1

LPOP 左端弹出

格式:lpop 参数1 [参数2]

参数1:list名称
参数2:数量
示例:

弹出list1左端第1条数据

lpop list1

弹出list1左端起3条数据

lpop list1 3

RPOP 右端弹出

格式:rpop 参数1 [参数2]

参数1:list名称
参数2:数量
示例:

弹出list1右端第1条数据

rpop list1

弹出list1左端起2条数据

rpop list1 2

LINDEX 检索指定索引数据

格式:lindex 参数1 参数2

参数1:list名称
参数2:索引
示例:

检索list1索引为5的数据

lindex list1 5

LLEN 检索数量

格式:llen 参数1

参数1:list名称
示例:

检索list1数据的条数

llen list1

LREM 删除值

格式:lrem 参数1 参数2 参数3

参数1:list名称
参数2:数量
参数3:指定值
示例:

在list1中删除5条值为hello的数据

lrem list1 5 hello

LTRIM 截取赋值

格式:ltrim 参数1 参数2 参数3

参数1:list名称
参数2:起始索引
参数3:终止索引
示例:

截取list1索引1到5的数据,将截取片段替换为list1的value

ltrim list1 1 5

RPOPLPUSH 弹出插入

格式:rpoplpush 参数1 参数2

参数1:list名称
参数2:list名称
示例:

将list1右端数据弹出,并将该数据压入list2的左端

rpoplpush list1 list2

LSET 修改

格式:lset 参数1 参数2 参数3

参数1:list名称
参数2:索引
参数3:值
示例:

将list1索引为0的值修改为hello

lset list1 0 hello

LINSERT 插入

格式:linsert 参数1 参数2 参数3 参数4

参数1:list名称
参数2:before | after
参数3:已有值
参数4:新值
示例:

在list1插入一个新值world位置在hello前面

linsert before hello world

在list2插入一个新值world位置在hello后面

linsert after hello world

1.5 Hash(哈希)操作命令

HSET 设置

格式:hset 参数1 参数2

参数1:hash名称
参数2:键值对
示例:

在user01中添加一个键值对key为id、value为1

hset user01 id 1

HGET 获取

格式:hget 参数1 参数2

参数1:hash名称
参数2:内部key
获取user01的id

hget user01 id

HMSET 批量设置

格式:hmset 参数1 参数2

参数1:hash名称
参数2:键值对(可以多个使用空格分隔)
示例:

在user01中添加一个id值为1、name值为zhangsan

hmset user01 id 1 name zhangsan

HMGET 批量获取

格式:hmget 参数1 参数2

参数1:hash名称
参数2:内部key(可以多个使用空格分隔)
示例:

获取user01的id和name

hmget user01 id name

HGETALL 获取所有

格式:hgetall 参数1

参数1:hash名称
示例:

获取user001的所有内容

hgetall user001

HLEN 获取长度

格式:hlen 参数1

参数1:hash名称
示例:

获取user001的键值对数量

hlen user001

HDEL 删除键值对

格式:hdel 参数1 参数2

参数1:hash名称
参数2:内部key
示例:

删除user001的name键值对

hdel user001 name

HEXISTS 存在检索

格式:hexists 参数1 参数2

参数1:hash名称
参数2:内部key
示例:

检索user001是否存在name键

hexists user001 name

HKEYS 获取所有键

格式:hkeys 参数1

参数1:hash名称
示例:

获取user001的所有key

hkeys user001

HVALS 获取所有值

格式:hkeys 参数1

参数1:hash名称
示例:

获取user001的所有value

hvals user001

HINCRBY 整数加法

格式:hincrby 参数1 参数2 参数3

参数1:hash名称
参数2:内部key
示例:

对user001中age的value增加1

hincrby user001 age 1

HINCRBYFLOAT 浮点数加法

格式:hincrbyfloat 参数1 参数2 参数3

参数1:hash名称
参数2:内部key
示例:

对user001中score的value增加0.5

hincrby user001 score 0.5

HSETNX NX规则设置

格式:hsetnx 参数1 参数2

参数1:hash名称
参数2:键值对
示例:

如果user01中不存在id,则添加一个键值对key为id、value为1

hsetnx user01 id 1

1.6 Set(集合)操作命令

SADD 添加元素

格式:sadd 参数1 参数2

参数1:set名称
参数2:元素(可以多个使用空格分隔)
示例:

将hello、world添加到set1

sadd set1 hello world

SMEMBERS 遍历

格式:smembers 参数1

参数1:set名称
示例:

遍历set1

smembers set1

SISMEMBER 存在判断

格式:sismember 参数1 参数2

参数1:set名称
参数2:元素
示例:

判断hello是否存在于set1

sismember set hello

SREM 删除

格式:srem 参数1 参数2

参数1:set名称
参数2:元素
示例:

在set1中删除hello

srem set1 hello

SCARD 检索元素个数

格式:scard 参数1

参数1:set名称
示例:

检索set1中元素个数

scard set1

SRANDMEMBER 随机展示

格式:srandmember 参数1 参数2

参数1:set名称
参数2:数量
示例:

在set1随机展示2个元素

srandmemeber set1 2

SPOP 随机弹出

格式:spop 参数1 参数2

参数1:set名称
参数2:数量
示例:

在set1 随机弹出2个元素

spop set1 2

注:spop与srandmember区别在于spop会将元素删除

SMOVE 元素移动

格式:smove 参数1 参数2 参数3

参数1:数据源set名称
参数2:接收set名称
参数3:元素
示例:

将set1中的hello移动到set2

smove set1 set2 hello

SDIFF 差集

格式:sdiff 参数1 参数2

参数1:被差运算set

参数2:差运算set(可以多个用空格分隔)

示例:

检索在set1和set2中set1独有的元素

sdiff set1 set2

SUNION 并集

格式:sunion 参数1 参数2

参数1:set名称

参数2:set名称(可以多个用空格分隔)

示例:

检索set1、set2合并后的集合

sunion set1 set2

SINTER 交集

格式:sinter 参数1 参数2

参数1:set名称

参数2:set名称(可以多个用空格分隔)

示例:

检索set1和set2共有的元素,返回结果集

sinter set1 set2

SINTERCARD 交集(redis7新命令)

格式:sintercard 参数1 参数2 参数3

参数1:参与的set数量

参数2:参与的set名称(每个用空格分隔)

参数3:limit限制

示例:

检索set1和set2共有的元素,返回数量

sintercard 2 set1 set2

检索set1和set2共有的元素,返回数量,且数量作最大限制为10

sintercard 2 set1 set2 limit 10

1.7 Zset(有序集合)操作命令

ZADD 添加

格式:zadd 参数1 参数2 参数3

参数1:zset名称
参数2:zset元素(score value)(可以多个使用空格分隔)
示例:

在zset1添加一个元素score为60、value为hello

zadd zset1 60 hello

ZRANGE 遍历

格式:zrange 参数1 参数2 参数3 [参数4]

参数1:zset名称
参数2:起始索引
参数3:终止索引
参数4:withscores
示例:

遍历zset1所有元素

zrange zset1 0 -1

附带分数遍历zset2所有元素

zrange zset2 0 -1 withscores

ZREVRANGE 反转遍历

格式:zrecrange 参数1 参数2 参数3 [参数4]

参数1:zset名称
参数2:起始索引
参数3:终止索引
参数4:withscores
示例:

反转遍历zset1所有元素

zrevrange zset1 0 -1

附带分数反转遍历zset2所有元素

zrevrange zset2 0 -1 withscores

ZRANGEBYSCORE 分数范围选取

格式:zrangebyscore 参数1 参数2 参数3 参数4 参数5

参数1:zset名称
参数2:最低分
参数3:最高分
参数4:withscores
参数5:limit 起始索引 步长
示例:

检索zset1中60到100分的元素

zrangebyscore zset1 60 90 withscores

附带分数检索zset1中60到100分的元素

zrangebyscore zset1 60 90 withscores

检索zset1中60到100分的元素,限制从0开始步长为2

zrangebyscore zset1 60 90 limit 0 2

ZSCORE 检索分数

格式:zscore 参数1 参数2

参数1:zset名称
参数2:元素
示例:

检索zset1中v1元素的分数

zscore zset1 v1

ZCARD

格式:zcard 参数1

参数1:zset名称
示例:

检索zset1元素个数

zcard zset1

ZREM 删除

格式:zrem 参数1 参数2

参数1:zset名称
参数2:元素(可以多个使用空格分隔)
示例:

删除zset1中v1、v2元素

zrem zset1 v1 v2

ZINCRBY 增加分数

格式:zincrby 参数1 参数2 参数3

参数1:zset名称
参数2:分数
参数3:元素
示例:

将zset1中的v1元素的分数增加5分

zincrby zset1 5 v1

ZCOUNT 检索指定分数范围中的元素个数

格式:zcount 参数1 参数2 参数3

参数1:zset名称
参数2:最低分
参数3:最高分
示例:

检索zset1中60到100分的元素个数

zcount zset1 60 100

ZMPOP 弹出

格式:zmpop 参数1 参数2 参数3 参数4

参数1:数量(zset数量)
参数2:zset名称(使用空格分隔)
参数3:max | min
参数4:数量(弹出数量)
示例:

从zset1、zset2中弹出2个最小的元素

zmpop 2 zset1 zset2 min 2

ZRANK 检索索引

格式:zrank 参数1 参数2

参数1:zset名称
参数2:元素
示例:

检索zset1中v1的索引号

zrank zset1 v1

ZREVRANK 检索反转索引

格式:zrevrank 参数1 参数2

参数1:zset名称
参数2:元素
示例:

反转检索zset1中v1的索引号

zrevrank zset1 v1

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

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

相关文章

解决Word编号与标签之间间隙过大的问题

前言 今天在写文档时发现,当给标题设置中文编号(一、二、三…)后,编号与文字之间会产生一个非常大的间隙,使用的字体是“思源黑体M”,更换其他字体后依然如此,很不美观(如图所示&am…

(二十二)数据符号化——矢量数据符号化②

数据符号化——矢量数据符号化② 目录 数据符号化——矢量数据符号化② 3.统计符号设置4.组合符号设置 3.统计符号设置 在 ArcMap 中可以使用符号系统来设置和定制地图元素的样式、颜色和标注。其中,统计符号可以用于表示一个或多个统计值的分布情况和趋势。 这是…

数据结构第六章 图 6.1-6.3 错题整理

6.1 6.C 加上一个点实现非连通 去除每个边都是一颗不同的生成树 一共n条边 13.C n个顶点、e条边的无向图,森林。树的角度看,除了根节点没有一条边与其对应,其他顶点都对应一条边,用顶点-边得出有多少颗树 14.A II 等于 也可以…

Git 分布式版本控制

Git概述 Git是分布式版本控制系统,可以快速高效地处理各种项目。具有廉价的本地库,方便的暂存区和多个工作流分支等特性。 版本控制目的:个人开发过渡到团队协作 分布式版本控制系统的优点: 1、服务器断网的情况下也可以…

DELL戴尔笔记本电脑Dell G5 15 5587原厂Win10系统镜像,原装OEM预装专用系统,恢复出厂状态

dell戴尔笔记本电脑,Dell G5 15 5587原厂Windows10系统镜像,原装OEM预装专用系统,恢复出厂状态 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件等预装程序 链接:https://pan.baidu.com/s/1Av93lwhHR16SRGJAf__NAg?pwdkqkc 提取码:kq…

maven官网下载,中央仓库官网,搜索官网

maven 官网 https://maven.apache.org/ maven 下载 https://maven.apache.org/ maven 各版本下载 maven中央仓库 https://repo.maven.apache.org/maven2/ maven 搜索jar文件版本 https://mvnrepository.com/ 阿里镜像官网, https://developer.aliyun.com/mirro…

iPhone手机如何添加桌面便签软件小组件?

iPhone手机的小组件功能受到了很多用户的喜爱,它可以让用户更加快捷的查看到APP里面的部分相关内容。这项功能和便签软件结合起来之后,甚至能产生1加1大于二的效果。那么iPhone手机如何添加桌面便签软件小组件呢?以iPhone手机端敬业签桌面便签…

Day 56 kMeans 聚类

代码: package dl;import java.io.FileReader; import java.util.Arrays; import java.util.Random; import weka.core.Instances;/*** kMeans clustering.*/ public class kMeans {/*** Manhattan distance.*/public static final int MANHATTAN 0;/*** Euclidea…

react中基于腾讯地图的地图选点,地址搜索逆向定位获取经纬度

react中基于腾讯地图的地图选点,地址搜索逆向定位获取经纬度 效果示例图地图组件tencentMap/index.jsx样式map.scss 使用案例 效果示例图 地图组件tencentMap/index.jsx import { useEffect, useRef, useState } from "react"; import "./map.scss&…

PHP函数、数组和错误处理:简单实用的开发技巧和错误处理方法

目录 PHP函数 函数的基本概念: 函数定义语法: 函数命名关系: 参数详解 形参 实参 ​编辑 默认值 引用传递 函数体 函数返回值 作用域 静态变量 可变函数 匿名函数 基本概念 闭包 伪类型 库函数 有关输出的函数 有关时间…

Linux守护进程详解、范例演示 ( 6 ) -【Linux通信架构系列 】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the…

gitee 上传、下载代码

gitee push 代码 四步走 $ git add . $ git commit -m "修改了什么东西,改了哪个bug,加了一条long服务" $ git remote add origin https://gitee.com/666666666666666666.git $ git push -u origin master1. 先安装git ,自行百度 …

大数据到底要学习一些什么内容

大数据本质上是海量数据。 以往的数据开发,需要一定的Java基础和工作经验,门槛高,入门难。 如果零基础入门数据开发行业的小伙伴,可以从Python语言入手。 Python语言简单易懂,适合零基础入门,在编程语言…

Spring Boot 中的 @CachePut 注解是什么,原理,如何使用

Spring Boot 中的 CachePut 注解是什么,原理,如何使用 简介 在 Spring Boot 中,CachePut 注解是用于缓存的注解之一,用于更新缓存中的数据。相比于 Cacheable 注解,CachePut 注解可以用于更新缓存中的数据&#xff0…

鞍山万象汇钢都夜巷3.0炫目回归——“钢刚好”遇见快乐

6月21日晚,鞍山万象汇钢都夜巷3.0市集快意回归,盛大启幕。在清爽宜人的晚风里、在热烈肆意的旋律中,这一场以快乐为基调的暑期市集,正式奏响钢都夏夜狂欢的乐章。汇聚多元场景,搜罗热门美食,消解盛夏酷暑&a…

VORS、CCDM模型、GeoDetector、GWR模型集成技术在城镇化与生态系统健康空间关系分析及影响效应中的应用

城市群是一国经济发展水平的象征,也是一国经济发展到一定阶段的标志,我国城市群建设体量不断增加,将成为全球经济的核心,中国城市群的建设逐步引领全球进入到了21世纪的中国新时代。然而,高速的城镇化发展,…

DBeaver使用ssh隧道远程连接

1,ssh 隧道的作用 SSH 隧道(SSH tunnel)是通过安全外壳协议(SSH)在公共网络上创建一个安全的通信通道的技术。它的作用是加密和保护数据通信,同时允许在不安全的网络环境中安全地传输数据。 以下是一些 SS…

《一步到位,走进一站式服务治理时代:Redis管理16个数据库的最佳实践》

目录 1. 我们为什么要使用Redis缓存数据库? 2. 关系型与非关系型数据库有哪些区别? 3. Redis中的缓存问题与解决方案:穿透、击穿、雪崩 4. 为什么要在一个项目中使用/管理16个数据库呢? 5. 使用16个数据库比使用1个数据库的…

OpenStack(T版)——网络(Neutron)服务介绍与安装

文章目录 OpenStack(T版)——网络(Neutron)服务介绍与安装安装和配置(controller)准备(1)创建数据库(2)加载admin user的环境变量(3)创建服务凭证 配置Neutron网络服务组件(1)安装软件(2)编辑文件/etc/neutron/neutron.conf,完成以下操作(3)配置Layer 2 (ML2)plug-i…

时序数据库 TDengine 与腾讯云多个产品线完成兼容性互认证明

随着数字经济蓬勃发展,数据成为驱动企业数字化转型的关键生产要素,如何加强对数据资源的治理利用、实现数据洞察、激活数据价值正成为亟待解决的问题。在此背景下,数据库与操作系统、云平台等国产化软件相互结合赋能成为解决问题的思路之一。…