Redis-五大数据类型-String(字符串)

Redis数据类型


key键

  1. keys * 查看当前库中所有的key 。

在这里插入图片描述

  1. exists key 判断某个key是否存在。

    可以设置多个key,只返回存在的个数,但不返回哪一个存在/不存在。

    exists k1 查看k1是否存在,如果存在返回1
    exists k1 k2 k3 查看k1 k2 k3是否存在,如果k1 k2存在,k3不存在,则返回2
    

    在这里插入图片描述

  2. move key db 将当前数据库的 key 移动到给定的数据库 db 当中。

    move k1 8 将k1从当前数据库移动到8号库
    
  3. type key 查看当前key 所储存的值的类型。

    返回当前key所储存的值的类型,如string 、list等。
    在这里插入图片描述

  4. del key 删除已存在的key,不存在的 key 会被忽略。

    可以设置多个key,返回删除成功的个数。

    del k1 删除k1,如果成功返回1,失败返回0
    del k1 k2 k3 删除k1 k2 k3,如果k1 k2存在,k3不存在,则返回2
    

    在这里插入图片描述

  5. expire key time 给key设置time秒的过期时间。

    设置成功返回 1 。 当 key 不存在返回 0。

    expire k1 10 给k1设置10秒后过期
    
  6. ttl key 以秒为单位返回 key 的剩余过期时间。

    当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。

  7. persist key 移除给定 key 的过期时间,使得 key 永不过期。

    当过期时间移除成功时,返回 1 。 如果 key 不存在或 key 没有设置过期时间,返回 0 。

五大数据类型-String(字符串)

简介

  • String是Redis最基本的类型,一个key对应一个value。
  • String是二进制安全的,意味着String可以包含任何数据,比如序列化对象或者一张图片。
  • String最多可以放512M的数据。

String底层数据结构

  • String底层数据结构是简单动态字符串(simple dynamic string,SDS)。
  • 类似于 Python 中的 List ,采用预分配方式来减少内存的频繁分配。

在这里插入图片描述

如图,内存实际大小一般都要高于字符串实际大小。当字符串长度小于1M时,扩容都是加倍现有的空
间,如果超过1M,扩容时每次只会多扩1M的空间。字符串最大长度为512M。

常用命令

  1. set key value 用于设置给定 key 的值。如果 key 已经存储其他值, set 就重写旧值,且无视类型。

    set k1 v1 向Redis中设置一个k1的键值对
    set k1 100 将k1的值由v1重置为100
    

    在这里插入图片描述

  2. get key 用于获取指定 key 的值。如果 key 不存在,返回 nil 。

    在这里插入图片描述

  3. append key value 将给定的value追加到key原值末尾。

    如果 key 已经存在并且是一个字符串, append 命令将 value 追加到 key 原来的值的末尾。
    如果 key 不存在, append 就简单地将给定 key 设为 value ,就像执行 set key value 一样。

    append k2 v2 在Redis中不存在k1,所以直接设置k1的值为v2
    append k1 v2 向k1的值末尾添加一个v2,最终结果为100v2
    

    在这里插入图片描述

  4. strlen key 获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。

    在这里插入图片描述

  5. setex key time value 给指定的 key 设置值及time 秒的过期时间。如果 key 已经存在, setex命令将会替换旧的值,并设置过期时间。

    setex k1 10 v1 向Redis中设置一个k1的键值对并且10秒后过期
    

    在这里插入图片描述

  6. setnx key value当key不存在时,设置给定 key 的值。如果key存在,则没有任何影响。

    setnx k1 v1 向Redis中设置一个k1的键值对
    setnx k1 v2 Redis中存在k1,则没有影响,k1的值仍然为v1
    

    在这里插入图片描述

  7. incr key 将 key 中储存的数字值增一。

    如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incr 操作。
    如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。

    incr k3 因为Redis中不存在k3,所以先初始化为0,再递增,值为1
    incr k3 存在k3,递增后k3的值为2
    incr k1
    incr k2 因为k1,k2不为数值,Redis返回一个错误
    

    在这里插入图片描述

  8. decr key将 key 中储存的数字值减一。

    如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 decr 操作。
    如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。

    decr k4 因为Redis中不存在k4,所以先初始化为0,再递增,值为-1
    decr k4 存在k4,递增后k1的值为-2
    decr k2 因为k2不为数值,Redis返回一个错误
    

    在这里插入图片描述

  9. incrby/decrby key step 将key存储的数字值按照step进行增减。

    如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incrby/decrby 命令。
    如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。

    在这里插入图片描述

  10. mset key1 value1 key2 value2 ……同时设置一个或多个 key-value 。

    mset k1 v1 k2 v2 k3 v3 同时向Redis中设置了k1 k2 k3
    

    在这里插入图片描述

  11. mget key1 key2 ……返回所有(一个或多个)给定 key 的值。

    如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。

    mget k1 k2 k3 k4 k5 k6 同时获取k1 k2 k3 k4 k5 k6
    

    在这里插入图片描述

  12. msetnx key1 value1 key2 value2 ……用于所有给定 key 都不存在时,同时设置一个或多个key-value 。

    msetnx具有原子性特性,有一个失败,则都失败。

    msetnx k6 v6 k7 v7 向Redis中设置k6 k7两个键值对
    msetnx k1 v6 k8 v8 Redis中存在k1,k1设置失败,由于原子性特性,k8也设置失败
    

    在这里插入图片描述

  13. getrange key start end用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由start 和 end 两个偏移量决定(包括 start 和 end 在内)。

    set java helloworld 设置一个key为java,value为helloworld的值
    getrange java 0 3 获取索引0-3的值,结果为hell
    

    在这里插入图片描述

  14. setrange key offset value用指定的字符串重写给定 key 所储存的字符串值,重写的位置从偏移量 offset 开始。

    set java helloworld 设置一个key为java,value为helloworld的值
    setrange java 5 baizhan 从偏移位置5(w)开始,用baizhan重写key
    

    在这里插入图片描述

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

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

相关文章

域信息搜集简单总结

判断域 net time /domain net user /domain net view /domain net config workion查询当前登录域及登录用户信息 找到域 ping 域主机名 即可得到域管理员的IP地址 BloodHound内网渗透分析工具 内网渗透工具bloodhound安装及使用_bloodhound使用-CSDN博客 BloodHou…

23.哀家要长脑子了!

目录 1.290. 单词规律 - 力扣(LeetCode) 2.532. 数组中的 k-diff 数对 - 力扣(LeetCode) 3.205. 同构字符串 - 力扣(LeetCode) 4.138. 随机链表的复制 - 力扣(LeetCode) 5.599. 两…

webpack与vite

webpack 使用步骤: 初始化项目 pnpm init -y安装依赖webpack、webpack-cli在项目中创建src目录,然后编写代码(index.js)执行pnpm weboack来对代码进行打包(打包后观察dist文件夹) 配置古文件(w…

异地组网,让“远程运维”更简单

您是否在联网场景中有过这些需求? 摄像头需要联网统一监控、PLC需要联网告别本地升级、工控机需要联网告别本地配置、广告屏需要联网告别本地下载视频、远程打开终端设备WEB进行配置......这些问题有人新升级的“异地组网”功能统统可以解决! 告别繁琐…

【基于MAX98357的Minimax(百度)长文本语音合成TTS 接入教程】

【基于MAX98357的Minimax(百度)长文本语音合成TTS 接入教程】 1. 前言2. 先决条件2.1 硬件准备2.2 软件准备2.3 接线 3. 核心代码3.1 驱动实现3.2 代码解析 4. 播放文本5. 结论 视频地址: SeeedXIAO ESP32S3 Sense【基于MAX98357的Minimax&am…

C语言阶段性测试错题纠正与拓展

引言:在2024年4月26日,我进行了C语言知识的“期末考试”。通过这次考试,我发现了我的知识漏洞。所以,我写下这篇博客来记录我的错题,并进行纠正,然后对于以前遗忘知识的回顾。 更多有关C语言的知识详解可前…

VMware虚拟机中ubuntu使用记录(5)—— 如何在ubuntu中安装USB相机ros驱动并获取usb摄像头数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、ROS下USB相机驱动1.准备工作(1) 下载驱动(2) 创建ROS工作空间 2. 安装usb_cam驱动(1) 安装usb_cam驱动包(2) 编译代码 3. 修改usb_cam驱动的配置文件(1) 查看US…

设计模式之组合实体模式

在编程的奇幻森林里,树木与枝叶错综复杂,如何让代码世界井然有序?组合实体模式(Composite Pattern)就像一位高明的园艺师,它以一种巧妙的方式,将个体与整体统一管理,让无论是单个对象…

古典密码学简介

目录 C. D. Shannon: 一、置换密码 二、单表代替密码 ① 加法密码 ② 乘法密码 ③密钥词组代替密码 三、多表代替密码 代数密码 四、古典密码的穷举分析 1、单表代替密码分析 五、古典密码的统计分析 1、密钥词组单表代替密码的统计分析 2、英语的统计规…

刷代码随想录有感(54):二叉搜索树中的搜索(BST)

题干&#xff1a; 代码&#xff08;递归实现&#xff09;&#xff1a; TreeNode* searchBST(TreeNode* root, int val){if(root NULL || root-> val val)return root;TreeNode* res;if(val > root->val) res searchBST(root->right, val);if(val < root->…

Redis 实战之对象

Redis 实战 - 对象 对象的类型与编码类型编码和底层实现 字符串对象编码的转换字符串命令的实现 列表对象编码转换列表命令的实现 哈希对象编码转换哈希命令的实现 集合对象集合命令的实现 有序集合对象编码的转换有序集合命令的实现 类型检查与命令多态类型检查的实现多态命令…

工业光源-半环形光源-特点

产品特点 ◆高密度LED排列&#xff1b; ◆应用于特殊结构的安装与出光方向&#xff1b; ◆从180方向照射&#xff0c;消除阴影&#xff1a; ◆中间开孔&#xff0c;使光源与相机镜头完美契合&#xff1a; ◆多角度可选&#xff0c;可适应不同工作距离的应用&#xff1b; ◆可选…

c++11 标准模板(STL)本地化库 - 平面类别(time_get) - 从输入字符序列中解析时间/日期值到 std::tm 中(八)

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 从输入字符序列中解析时间/日期值到 std::tm 中 std::time_get …

算法学习系列(五十五):背包模型(三)

目录 引言一、潜水员二、背包问题求具体方案三、机器分配四、开心的今明五、金明的预算方案 引言 今天介绍的是背包模型&#xff0c;还是以题目的形式来介绍的。主要讲了背包问题求方案&#xff0c;就是由最优方案递推回去即可。还有就是一些比较经典的背包问题&#xff0c;其…

Sqlserver批量迁移Job

因为切换物理机&#xff0c;需要把数据库的作业从A机器迁移到B机器&#xff0c;数据库整体备份还原就可以了&#xff0c;数据库上的作业不会跟着带过去&#xff0c;需要手动创建&#xff0c;作业数量太多&#xff0c;逐一创建太浪费时间&#xff0c;Microsoft SQL Server Manag…

【LLM多模态】MiniGPT4模型结构和训练流程

note 图生文应用场景&#xff1a;比如电商领域根据产品图像生成产品描述、娱乐领域中根据电影海报生成电影介绍等MiniGPT-4将预训练的大语言模型和视觉编码器参数同时冻结&#xff0c;只需要单独训练线性投影层&#xff0c;使视觉特征和语言模型对齐。MiniGPT4的视觉编码器&am…

使用docker-compose编排Lnmp(dockerfile) 完成Wordpress

目录 一、 Docker-Compose 1.1Docker-Compose介绍 1.2环境准备 1.2.1准备容器目录及相关文件 1.2.2关闭防火墙关闭防护 1.2.3下载centos:7镜像 1.3Docker-Compose 编排nginx 1.3.1切换工作目录 1.3.2编写 Dockerfile 文件 1.3.3修改nginx.conf配置文件 1.4Docker-Co…

【前端学习——防抖和节流+案例】

定义 【前端八股文】节流和防抖 防抖 连续触发事件但是在设定的一段时间内只执行最后一次 代码实现思路【定时器】 大概意思就是&#xff1a; 每次按起键盘后&#xff0c;都将之前的定时器删除&#xff0c;重新开始计时。 节流 连续触发事件&#xff0c;只执行一次 …

Web APIs 学习归纳8---移动端特效

上一节学习了PC端的特效&#xff0c;现在学习移动端的特效。 一、移动端触屏事件 1.1 触屏事件概述 移动端浏览器兼容性较好&#xff0c;我们不需要考虑以前 JS 的兼容性问题&#xff0c;可以放心的使用原生 JS 书写效果&#xff0c;但是移动 端也有自己独特的地方。比如触屏…

【Linux网络】SSH服务

目录 一、SSH概述与使用 1.1 定义 1.2 优点 1.3 原理 1.4 命令登录 1.5 跳板登录 1.6 远程控制 二、SSH配置 2.1 常用的服务端配置 2.2 ssh服务最优配置 三、免密登录 3.1 操作原理 3.2 操作步骤 一、SSH概述与使用 1.1 定义 SSH&#xff08;Secure Shell&#…