【Redis】数据类型操作一 (key/String/List)

news2024/11/24 5:52:15

文章目录

    • 0、Redis键(key)
    • 1、Redis字符串(String)
    • 2、Redis列表(List)
    • 实操
      • 0、Redis键(key)
      • 1、Redis字符串(String)
      • 2、Redis列表(List)

0、Redis键(key)

  • 切换数据库

select dbid
select 8

  • 清空数据库

flushdb (清空当前库)
flushall (通杀全部库)

  • 添加 key-value

set key value
set k1 Rice

  • 查看当前数据库所有key

keys *

  • 查看当前数据库的key的数量

dbsize

  • 判断某个key是否存在

exists key

  • 查看key的类型

type key

  • 删除指定的key数据

del key
unlink key
(unlink是非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除会在异步操作。)

  • 给定的key设置过期时间(单位秒)

expire key time
expire k1 10 (数据k1在10秒后过期)

  • 查看还有多少秒过期

ttl key
ttl k1 (-1表示永不过期,-2表示已过期)

1、Redis字符串(String)

  • String类型是Redis最基本的类型,一个key对应一个value。
  • String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
  • 一个字符串value最多可以是512M。
  • String的数据结构
    简单动态字符串(Simple Dynamic String,缩写SDS)。
    是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配.
    为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。
    当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。
  • 添加键值对

set <key> <value>

  • 查询对应键值

get <key>

  • 将给定的 追加到原值的末尾

append <key> <value>

  • 获得值的长度

strlen <key>

  • 设置 key 的值,只有在 key 不存在时才能成功

setnx <key> <value>

  • 将 key 中储存的数字值增1

incr
只能对数字值操作,如果为空,新增值为1

  • 将 key 中储存的数字值减1

decr
只能对数字值操作,如果为空,新增值为-1

  • 自定义步长增减 key 中储存的数字值

incrby / decrby <步长>

批量操作原子性:有一个失败则都失败。

  • 批量设置一个或多个 key-value对

mset <key1> <value1> <key2> <value2> …

  • 批量获取一个或多个 value

mget <key1> <key2> <key3> …

  • 批量设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

msetnx <key1> <value1> <key2> <value2> …

  • 获得值的范围,类似java中的substring,前闭后闭

getrange <key> <起始位置> <结束位置>

  • setrange <key> <起始位置>

用 覆写所储存的字符串值,从<起始位置>开始(索引从0开始)。

  • 设置键值的同时,设置过期时间,单位秒。

setex <key> <过期时间> <value>

  • 以新换旧,设置了新值同时获得旧值。

getset <key> <value>

2、Redis列表(List)

  • 单键多值
  • Redis 列表是简单的字符串列表,按照插入顺序排序。
  • 底层实际是个双向链表,可以添加一个元素到列表的头部(左边)或者尾部(右边)。
  • 对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。
  • List的数据结构为快速链表quickList。
    在列表元素较少的情况下,使用压缩列表ziplis存储,分配一块连续的内存,将所有的元素紧挨着一起存储。
    在列表元素数据量比较多的时候,会改用quicklist。quicklist是链表和ziplist的结,多个ziplist使用双向指针串起来使用。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。因为普通的链表需要的附加指针空间太大,比较浪费空间。比如这个列表里存的只是int类型的数据,结构上还需要两个额外的指针prev和next。
  • 从左边/右边插入一个或多个值

lpush/rpush <key> <value1> <value2> <value3> …

  • 从左边/右边弹出一个值(值在键在,值光键亡)

lpop/rpop <key>

  • 从<key1>列表右边弹出一个值,插到<key2>列表左边。

rpoplpush <key1> <key2>

  • 按照索引下标获得元素(从左到右)

lrange <key> <start> <stop>
lrange mylist 0 -1 (start 0 stop -1表示获取所有。左边第一个0,右边第一个-1)
lindex <key> <index>

  • 获得列表长度

llen <key>

  • 在<value>的后面插入<newvalue>插入值

linsert <key> before <value> <newvalue>

  • 从左边删除n个value(从左到右)

lrem <key> <n> <value>

  • 将列表key下标为index的值替换成value

lset <key> <index> <value>


实操

本章基于docker的redis,如linux直接安装redis的,启动方式:
启动redis

0、Redis键(key)

切换数据库
设置及查询key
查看key及删除
key的数量

1、Redis字符串(String)

字串查询与拼接
字串长度
setnx字串
字串自增自减

批量set与get
字串部分值和覆写

初始化设置过期时间

2、Redis列表(List)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

python机器学习与深度学习在气象中如何应用??如台风预报数据智能订正、预测风电场的风功率、预测浅水方程模式

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

年终洞察:日本正兴起一波“反向海淘”

这两天&#xff0c;正在日本备婚的李杨&#xff08;化名&#xff09;收到了“漂洋过海”从Starday跨境电商服务平台买来的喜庆装饰品&#xff0c;“这些烘托传统中国婚礼的独特装饰品在日本是很难买到的”从她打开Starday跨境电商服务平台&#xff0c;选择心仪的装饰品并并下单…

[附源码]Python计算机毕业设计高校线上教学系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

mysql查询基础

查询执行图 查询顺序 explain 参数说明 Id: MySQL QueryOptimizer 选定的执行计划中查询的序列号。表示查询中执行select 子句或操作表的顺序,id 值越大优先级越高,越先被执行。id 相同,执行顺序由上至下 Select_type: 一共有9中类型,只介绍常用的4种: SIMPLE: 简单的 select 查…

前端——给图形绘制阴影

给图形绘制阴影 在HTML5中&#xff0c;使用canvas元素可以给图形添加阴影效果。添加阴影效果时&#xff0c;只需利用图形上下文对象的几个关于阴影绘制的属性就可以了&#xff0c;这几个属性如下。 shadowOffsetX——阴影的横向位移量。 shadowOffsetY——阴影的纵向位移量。…

提面优秀资格上岸浙大MBA经验分享

三百多天的备考&#xff0c;终于等来了一个好的结果。曾经的我也一直在犹豫到底要不要放弃对于浙大的执念&#xff0c;虽然说我的工作是还行&#xff0c;但是我的第一学历只是一个不入流的二本院校&#xff0c;当时咨询的老师说是对于浙大提面来说&#xff0c;我肯定是要吃学历…

MobSDK引进相关问题

1、进入全球领先的数据智能科技平台-MobTech袤博mob官网 首先注册帐号、核验身份、选择开发者平台 2、创建项目的appkey和对应的appSecret 进入开发者模式后&#xff0c;对应以下几个选项模块&#xff08;以短信验证模块为例&#xff09;&#xff0c;点击开始使用 跳转到个人…

[附源码]Nodejs计算机毕业设计基于的宠物领养管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

怎么将语音转为文字?不如试试这几个语音转文字软件app

随着时代的发展&#xff0c;现在许多小伙伴会将重要却来不及整理的内容&#xff0c;用录音或是语音的方式记录下来&#xff0c;之后再进行整理。但是在整理的时候&#xff0c;有些人可能会因为需要多听几遍音频才能完成工作而感到痛苦&#xff0c;毕竟这样做&#xff0c;花费的…

Elasticsearch版本升级实践、注意事项

版本关系 从官方文档看可以发现两个大版本升级需要关注到具体的版本&#xff0c;比如想从 5.x 版本升级到 7.x 版本&#xff0c;就必须先升级到 6.8 版本&#xff0c;再从 6.8 升级到 7.x 版本。 检查是否可以升级 1. 版本号确认 2. 通过API检查是否存在过期的用法 # ES 6.xG…

【夯实Kafka知识体系及基本功】「实践操作篇」单机部署实践手册(2.8.0)

来一段舞蹈 前提回顾 下载kafka wget https://archive.apache.org/dist/kafka/0.8.0/kafka_2.8.0-0.8.0.tar.gz或者 curl -O https://archive.apache.org/dist/kafka/0.8.0/kafka_2.8.0-0.8.0.tar.gz解压缩 tar -vxf kafka_2.8.0-0.8.0.tar.gz修改配置 修改conf/server.pro…

IAA品类洞察:扫描品类加快变现,如何抓住增长机遇?

易观分析&#xff1a;工具产品是IAA行业中的经典品类&#xff0c;开发门槛较低、变现模式成熟。从近期的商业化表现来看&#xff0c;我们关注到其中的扫描品类呈现高速增长之势&#xff0c;正释放出更多的发展潜力&#xff1a; ①行业方面&#xff1a;扫描品类的用户规模已超2千…

chatGPT实战之「基于你的数据库,为你智能生成SQL」

chatGPT为你生成SQL的落地效果演示 这几天很很多粉丝进行了深度交流&#xff0c;发现大家对于SQL学习或者编写都遇到过困难&#xff0c;因此勇哥突发奇想是否可以借助chatGPT来帮一下大家呢&#xff1f;于是就开启了chatGPT的落地之旅。从官网了解到chatGPT支持49种场景的&…

【webpack】使用webpack api打包一个最简单的js资源

简单了解一下webpack 本质上&#xff0c;webpack是一个用于现代javascript应用程序的静态模块打包工具。当webpack处理应用程序时&#xff0c;它会在内部从一个或多个入口点构建一个依赖图&#xff0c;然后将项目中所需要的每一个模块组合成一个或多个bundles&#xff0c;它们均…

前端_Vue_5.列表渲染

文章目录一、列表渲染1.1. v-for1.2. v-for 与对象1.3. 在 v-for 里使用范围值1.4. \<template\> 上的 v-for1.5. v-for 与 v-if1.6. 通过key管理状态1.7. 组件上使用 v-for1.8. 数组变化侦测1.8.1. 变更方法1.8.2. 替换一个数组1.9. 展示过滤或排序后的结果一、列表渲染…

最近的取款机

一 问题描述 在每台有故障的自动取款机上都贴着一个标签&#xff0c;提示客户去最近的取款机上取款。已知 n 台自动取款机的二维位置列表&#xff0c;为每台自动取款机都找到一个距离最近的自动取款机。 二 输入和输出 1 输入 第 1 行包含测试用例数 T&#xff08;T≤15&am…

Flinkcdc同步mysql到StarRocks(删除)

Flink 使用mysql cdc实时监听mysql并且同步到StarRocks&#xff08;SR&#xff09; 问题&#xff1a;我们在使用过程中请注意cdc版本和flink的版本&#xff0c;目前flink 1.15.2还没有很好地cdc兼容版本有能力的可以自己编译&#xff0c;参见目前版本兼容&#xff1b; SR官方推…

分布式光伏发电计及气象因子及出力预测方法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【WebGL-iTwin.js】理论篇(一):webgl中三维模型表示方式-多边形网格

一、三维模型表示方式 在计算机图形学中&#xff0c;三维模型一般是指空间中物理实体对象的数学表示。具体说来&#xff0c;三维模型是由其形状和颜色外观的描述构成。通常&#xff0c;三维对象的表示方法可以分为面表示和体表示两种类型。 面表示&#xff1a; 也就是表示三维…

C++ Reference: Standard C++ Library reference: Containers: map: map: size

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/map/size/ 公有成员函数 <map> std::map::size C98 size_type size() const; C11 size_type size() const noexcept;返回容器大小 返回map容器中的元素数量。 形参 没有形参。 返回值 容器中元素的数…