Redis五大数据类型以及相关操作

Redis五大数据类型

文章目录

  • Redis五大数据类型
    • key
    • 字符串string操作命令
    • 列表list
    • 集合set
    • 哈希hash
    • 有序集合zset (sorted set)

key

  • keys * 查看当前库的所有键
  • exists <key> 判断某个键是否存在
  • type <key> 查看键的类型
  • del <key> 删除某个键
  • expire <key> <seconds> 为键值设置过期时间,单位秒
  • ttl <key> 查看还有多久过期,-1表示永不过期,-2表示已过期
  • dbsize 查看当前数据库中key的数量
  • flushdb 清空当前库
  • Flushall 通杀全部库

字符串string操作命令

String类型,也就是字符串类型,是Redis中最简单的存储类型

其value是字符串,不过根据字符串的格式不同,又可以分为3类:

  • string:普通字符串
  • int:整数类型,可以做自增、自减的操作
  • float:浮点类型,可以做自增、自减操作

具体操作:

  • set <key> <value> 设置指定的值
  • get <key> 获取指定的值
  • append <key> <value>将给定的追加到原值的末尾
  • strlen <key>获取值的长度
  • setnx <key> <value> 只有在key不存在时设置key的值
  • incr <key>将key中存储的数字值增1
    只能对数字值操作,如果为空,新增值为1
  • decr <key>将key中存储的数字值减1
    只能对数字之操作,如果为空,新增值为-1
  • incrby /decrby <key> 步长将key中存储的数字值增减,自定义步长
  • mset <key1> <value1> <key2> <value2>同时设置一个或多个key-value对(一个key-value设置失败,都失败)
  • mget <key1> <key2> <key3>同时获取一个或多个value
  • msetnx <key1> <value1> <key2> <value2>同时设置一个或多个key-value对,当且仅当所有给定的key都不存在
  • getrange <key> <起始位置> <结束位置>获得值的范围(两边都是闭区间)
  • setrange <key> <起始位置> <value>用覆盖所存储的字符串值,从<起始位置>开始
  • setex <key> <过期时间> <value>设置键值的同时,设置过期时间,单位秒
  • getset <key> <value>以新换旧,设置了新值的同时获取旧值

更多请查看手册Redis 字符串(String)_redis教程

列表list

1)单键多值
2)Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
3)它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
具体操作:

  • lpush/rpush <key> <value1> <value2>从左边/右边插入一个或多个值
  • lpop/rpop <key>从左边/右边吐出一个值。若吐完了,则key自动删除
  • rpoplpush <key1> <key2> 从列表右边吐出一个值,插到列表左边(只有右出左进)
  • lrange <key> <start> <stop>按照索引下标获得元素(从左到右)
    获得全部元素:lrange <key> 0 -1
  • llen <key>获得列表长度
  • linsert <key> before <value> <newvalue>在value的前面插入newvalue
  • lrem <key> <n> <value>从左边删除n个value(从左到右)

集合set

1)Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的
2)Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。

  • sadd <key> <value1> <value2> .... 将一个或多个 member 元素加入到集合key 当中,已经存在于集合的 member 元素将被忽略。
  • smembers <key> 取出该集合的所有值。
  • sismember <key> <value>判断集合是否为含有该值,有返回true,没有返回false
  • scard <key>返回该集合的元素个数
  • srem <key> <value1> <value2> ....删除集合中的某个元素value1,value2。
  • spop <key> 随机从该集合中吐出一个值
  • srandmember <key> <n> 随机从该集合中取出n个值。(会从集合中删除,并且集合元素为空,集合自动删除)
    不会从集合中删除
  • sinter <key1> <key2> 返回两个集合的交集元素
  • sunion <key1> <key2> 返回两个集合的并集元素
  • sdiff <key1> <key2> 返回两个集合的差集元素

哈希hash

  • hset <key> <field> <value> 给key集合中的 field键赋值value
  • hget <key1> <field> 从key1集合field取出 value
  • hmset <key1> <field1> <value1> <field2> <value2>... 批量设置hash的值
  • hgetal <key>l获取所有的filed-value
  • hexists key <field>查看哈希表 key 中,给定域 field 是否存在。
  • hkeys <key> 列出该hash集合的所有field
  • hvals <key> 列出该hash集合的所有value
  • hincrby <key> <field> <increment>为哈希表 key 中的域 field 的值加上增量 increment
  • hsetnx <key> <field> <value>将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在

有序集合zset (sorted set)

  • zadd key score1 member[score2 member2] 向有序集合中添加一个或多个成员,或者更新已存在的成员分数(注意是分数在前,成员在后)
  • zrange key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间的成员【0,-1】查看所有,
    加上withscores后返回值会带上分数
  • zincrny key increment member 有序集合中对指定成员的分数上加上增量increment
  • zrem key member [member ...] 移除有序集合中一个或多个成员
  • zrangebyscore key min max [withscores] [limit offset count] 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
  • zrevrangebyscore key max min [withscores] [limit offset count]同上,改为从大到小排列。(注意是先max 后min)
  • zrank key member: 获取sorted set中元素的排名,默认都是升序,如果要降序则在命令的Z后面添加REV即可
  • zcount <key> <min> <max> 统计该集合,分数区间内的元素个数

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

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

相关文章

vue3-计算属性

计算属性 模板中的表达式虽然方便&#xff0c;但也只能用来做简单的操作。如果在模板中写太多逻辑&#xff0c;会让模板变得臃肿&#xff0c;难以维护。 根据作者今年是否看过书展示不同信息 <script lang"ts" setup> import { ref, reactive } from "…

Spring DI的理解和实现方式

Spring DI&#xff1a; 名词解释&#xff1a;依赖注入&#xff0c;是对IOC概念的不同角度的描述&#xff0c;是指应用程序在运行时&#xff0c; 每一个bean对象都依赖IOC容器注入当前bean对象所需要的另外一个bean 对象。&#xff08;例如在MyBatis整合Spring时&#xff0c;Sq…

杨中科 .NETCORE ENTITY FRAMEWORK CORE-1 EFCORE 第一部分

一 、什么是EF Core 什么是ORM 1、说明: 本课程需要你有数据库、SOL等基础知识。 2、ORM: ObjectRelational Mapping。让开发者用对象操作的形式操作关系数据库 比如插入: User user new User(Name"admin"Password"123”; orm.Save(user);比如查询: Book b…

C#进阶学习

目录 简单数据结构类ArrayList声明增删查改遍历装箱拆箱 Stack声明增取查改遍历装箱拆箱 Queue声明增取查改遍历 Hashtable声明增删查改遍历装箱拆箱 泛型泛型分类泛型的作用泛型约束 常用泛型数据结构类List声明增删查改遍历 Dictionary声明增删查改遍历 LinkedList声明增删查…

设计模式⑤ :一致性

一、前言 有时候不想动脑子&#xff0c;就懒得看源码又不像浪费时间所以会看看书&#xff0c;但是又记不住&#xff0c;所以决定开始写"抄书"系列。本系列大部分内容都是来源于《 图解设计模式》&#xff08;【日】结城浩 著&#xff09;。该系列文章可随意转载。 …

【Docker】Linux中Docker镜像结构及自定义镜像,并且上传仓库可提供使用

目录 一、镜像结构 1. 基本结构 2. 常用命令 二、自定义镜像 1. 基本镜像 2. 进阶镜像 3. 完善镜像 三、镜像上传仓库 每篇一获 一、镜像结构 自定义 Docker 镜像有很多用途&#xff0c;以下是一些主要的应用场景&#xff1a; 一致性环境&#xff1a;通过自定义镜像&a…

Gauss消去法(C++)

文章目录 算法描述顺序Gauss消去法列选主元Gauss消去法全选主元Gauss消去法Gauss-Jordan消去法 算法实现顺序Gauss消去法列选主元Gauss消去法全选主元Gauss消去法列选主元Gauss-Jordan消去法 实例分析 Gauss消去法是求解线性方程组较为有效的方法, 它主要包括两个操作, 即消元和…

正则表达式Regex

是什么&#xff1a;一句话&#xff0c;正则表达式是对字符串执行模式匹配的技术。 从一段字符串中提取出所有英文单词、数字、字母和数字。 如果采用传统方法&#xff1a;将字符串的所有字符分割成单个&#xff0c;根据ASCII码判断&#xff0c;在一定范围内就是字母&#xff…

pymssql 报错误解决办法:20002, severity 9

错误 解决办法 python3.6&#xff0c;安装pymssql低版本&#xff08;pymssql-2.1.5-cp36-cp36m-win32.whl&#xff09;

【教3妹学编程-算法题】构造限制重复的字符串

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开森。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;最近一周都是大晴天&#xff0c;艳阳高照 2哥&#xff1a;是啊&am…

ssh一直被扫描,有办法解决吗?-速盾网络(sudun)

如果您的SSH服务器一直被扫描&#xff0c;可能是因为黑客试图入侵您的系统。为了保护您的服务器安全&#xff0c;可以采取以下措施&#xff1a; 更改SSH端口&#xff1a;将默认的SSH端口&#xff08;22&#xff09;更改为其他非常用端口&#xff0c;这可以减少扫描活动的数量。…

C++关联容器

1. 关联容器概述 1.1 关联容器类型 关联容器和顺序容器有着很大不同,关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。两个主要的关联容器类型是map和set。map 中的元素是一些关键字—值对,关键字起到索引的作用…

相比其他关系型数据库,亚信安慧AntDB JDBC驱动特性有哪些不同之处

关键字&#xff1a;JDBC&#xff0c;双引擎语法&#xff0c;安全加强&#xff0c;批量更新 使用Java语言进行各类应用程序的快速开发成为目前比较主要且流行的开发方式。JDBC是 Java 语言中用来连接和操作关系型数据库的 API&#xff0c;在业务程序与关系型数据库通信时&#…

一文了解Git(所有命令)附带图片

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 其他…

机器学习算法理论:线性回归

线性回归 回归的理论解释&#xff1a;回归分析是确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法。按照自变量和因变量之间的关系类型&#xff0c;可分为线性回归分析和非线性回归分析。 如果在回归分析中&#xff0c;只包括一个自变量和一个因变量&#xff0c;…

Kotlin 函数式接口

函数式接口 接口只有一个抽象方法的接口&#xff0c;称为 函数式接口 functional interface&#xff0c;也叫做 Single Abstract Method(SAM) interface。 注&#xff1a;函数式接口&#xff0c;只有一个抽象方法&#xff0c;但可以有多个非抽象方法。 一、Kotlin Kotlin支持…

【Linux】Linux基础之权限

目录 一、Linux中的用户1.1 用户之间的身份切换1.2 指令提权 二、权限管理2.1 文件权限2.2 权限操作2.3 chown和chgrp 三、文件类型四、目录文件的权限操作五、权限掩码六、粘滞位 一、Linux中的用户 Linux中主要有两种用户&#xff1a; root&#xff0c;超级用户非root&…

基于多反应堆的高并发服务器【C/C++/Reactor】(下)重构Channel类

一、C语言 Channel.h #pragma once #include <stdbool.h> // 定义函数指针 typedef int(*handleFunc)(void* arg);// 定义文件描述符的读写事件 enum FDEvent {TimeOut 0x01,ReadEvent 0x02,WriteEvent 0x04 };struct Channel {// 文件描述符int fd;// 事件int even…

Netfilter 是如何工作的(六):连接跟踪信息的入口创建(in)和出口确认(confirm)

Articles (gitee.io) IPtables-朱双印博客 (zsythink.net) 在 Netfilter 是如何工作的(五) 中连接跟踪信息使用的创建-确认机制的 Netfilter在报文进入系统的入口处&#xff0c;将连接跟踪信息记录在报文上&#xff0c;在出口进行confirm.确认后的连接信息 本文以一个本机上送…

【MATLAB】CEEMDAN+FFT+HHT组合算法

代码原理 集成经验模态分解&#xff08;CEEMDAN&#xff09;是一种信号处理方法&#xff0c;旨在将非线性和非平稳信号分解为本质模态函数&#xff08;IMF&#xff09;。这种方法通过对信号进行多轮迭代&#xff0c;结合了噪声干扰的累计退化&#xff0c;从而更好地处理了信号…